`

立即执行函数

 
阅读更多

(function(){...})()和(function(){...}())是两种js立即执行函数的常见写法,为什么要加括号呢

 

函数声明、函数表达式、匿名函数

函数声明:function fnName(){...};使用function关键字声明一个函数,再指定一个函数名,叫函数声明

函数表达式:var fnName = function(){...};使用function关键字声明一个函数,但未给其命名,将它赋值给一个变量,叫函数表达式

匿名函数:function(){};使用function关键字声明一个函数,但未给命名,所以叫匿名函数。它也属于函数表达式

 

函数声明和函数表达式不同之处:①js引擎在解析代码时会‘函数声明提升’(function declaration hoisting)即会最先解析函数声明,而函数表达式还是按规矩由上而下逐行解析②函数表达式后面可以加括号立即执行,函数声明只能以fnName()形式调用

 

fnName();
function fnName(){
    ...
}//正常,因为‘提升’了函数声明,函数调用可在函数声明之前
 
fnName();
var fnName=function(){
    ...
}//报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后

var fnName=function(){
    alert('Hello World');
}();//函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数 注意这里fnName等于
  //函数执行的返回值

function fnName(){
    alert('Hello World');
}();//不会报错,但是javascript引擎只解析函数声明,忽略后面的括号,函数声明不会被调用

function(){
    console.log('Hello World');    
}();//语法错误,虽然匿名函数属于函数表达式,但是未进行赋值操作,
//所以javascript引擎将开头的function关键字当做函数声明,报错:要求需要一个函数名

 

至于文章开头的两种表达方式,就跟在匿名函数前面加!、+、-一样是起到消除js引擎识别歧义,告诉js引擎这是一个函数表达式。

当然,这其中加括号是最安全的做法,因为!、+、-等运算符会对函数返回值进行运算

分享到:
评论

相关推荐

    JavaScript中立即执行函数实例详解

    js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行。 ( function(){…} )()和...

    深化解析JavaScript中的立刻执行函数_.docx

    JavaScript中的立刻执行函数,也称为立即调用的函数表达式(IIFE,Immediately Invoked Function Expression),是一种在JavaScript中创建私有作用域和确保代码立即执行的常见技术。它的核心在于利用函数表达式来...

    js中的立即执行函数1

    立即执行函数表达式(Immediately Invoked Function Expression,简称IIFE)是JavaScript中一种常见的编程技巧,它用于创建一个独立的作用域,防止污染全局环境,并且在定义时即刻执行。IIFE通过两种方式实现,主要...

    什么是立即执行函数?有什么作用?

    什么是立即执行函数?有什么作用?.md

    深入解析JavaScript中的立即执行函数

    立即执行函数(IIFE)是JavaScript编程中一个非常实用的概念,它允许开发者创建一个独立的作用域,其中定义的变量不会影响到全局作用域,同时也不会被外部访问。在深入解析IIFE之前,我们需要了解JavaScript中函数的...

    深入理解javascript中的立即执行函数(function(){…})()

    ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因...

    JavaScript立即执行函数的三种不同写法

    在JavaScript编程中,立即执行函数(Immediately Invoked Function Expression,简称IIFE)是一种常见的模式,用于创建一个独立的作用域。这样做可以避免变量污染全局作用域,同时能立即执行其中的代码。IIFE可以有...

    JS立即执行函数功能与用法分析

    本文实例讲述了JS立即执行函数功能与用法。分享给大家供大家参考,具体如下: 相信大家经常会遇到下面这两种写法: (function(){ ... })() 和 (function(){ ... }()) 关于这样写是什么意思呢?有什么区别呢? 在...

    js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?

    JavaScript中的立即执行函数(Immediately Invoked Function Expression,简称IIFE)是一种常见的编程技巧,用于创建一个独立的作用域,避免变量污染全局环境。标题和描述中提到的两种IIFE的写法,`(function (){})...

    JavaScript闭包和立即执行函数的个人笔记

    闭包和立即执行函数一、闭包二、闭包的作用三、闭包形式四、立即执行函数五、使用环境六、小练习 一、闭包 当a函数已经执行完了,b函数才开始。 原创文章 10获赞 3访问量 453 关注 私信 展开阅读全文 作者:...

    详解JS中的立即执行函数

    立即执行函数表达式(IIFE,Immediately Invoked Function Expression)是JavaScript中一种特殊的函数写法,它允许你创建一个独立的作用域,确保内部的变量和函数不会与外部作用域中的变量和函数冲突或被覆盖。...

    JavaScript中的立即执行函数表达式介绍

    JavaScript中的一个独特特性是立即执行函数表达式(IIFE),它允许代码块在定义后立即执行,而不是将其赋给变量或函数名。这种技术在编写模块化代码、创建闭包以及避免全局变量污染方面非常有用。 立即执行函数...

    深入浅析javascript立即执行函数

    在Javascript中,任何function在执行的时候都会创建一个执行上下文,因为为function声明的变量和function有可能只在该function内部,这个上下文,在调用function的时候,提供了一种简单的方式来创建自由变量或私有子...

    javascript自执行函数之伪命名空间封装法.docx

    自执行函数,也称为立即执行函数表达式(IIFE),是指定义后立即执行的函数。它的典型格式如下: ```javascript (function() { // 函数体 })(); ``` 这种结构的主要特点是,当定义该函数的同时,也会立即执行它。这有...

Global site tag (gtag.js) - Google Analytics