JavaScript 函数声明,函数表达式,匿名函数的区别,深入理解立即执行函数(function(){…})()

Posted 盒子豪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 函数声明,函数表达式,匿名函数的区别,深入理解立即执行函数(function(){…})()相关的知识,希望对你有一定的参考价值。

function fnName(){xxxx};        // 函数声明:使用function关键字声明一个函数,在指定一个函数名。

//例如:(正常,因为 提升 了函数声明,函数调用可以在函数声明之前)
fnName();
function fnName(){
  alert(\'Hello World\');
}




var fnName = function(){xxxx};  //函数表达式:使用function关键字声明一个函数,但是未给函数命名,最后将匿名函数赋予给一个变量。

//例如1:(报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后)
fnName();
var fnName = function(){
  alert(\'Hello World\');
}
//例如2:(正常,函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数)
var fnName = function(){
  alert(\'Hello World\');
}();
//例如3:(报错,JavaScript引擎只解析函数声明,忽略后面的括号,函数声明不会被调用)
function fnName(){
  alert(\'Hello World\');
}();




function(){xxxx};               //匿名函数:使用function关键字声明一个函数,但是未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,
                                //匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或者创建闭包等等。
                                
//例如:(语法错误,语法错误,虽然匿名函数属于函数表达式,但是未进行赋值操作,所以javascript引擎将开头的function关键字当做函数声明,报错:要求需要一个函数名)
function(){
  alert(\'Hello World\');
}();

 先来给大家看两个小例子:(1)

var foo = 1;
  (function(){
      console.log(foo);   
      var foo = 2;
      console.log(foo);   
})();

输出:undefined  和   2

(2) 

var foo = \'Hello\';
  (function(){
      console.log(foo); 
      var bar = \'world\';
      console.log(foo + bar); 
    })();
console.log(foo + bar); 

 

 

如果我的内容对你有帮助,欢迎打赏

以上是关于JavaScript 函数声明,函数表达式,匿名函数的区别,深入理解立即执行函数(function(){…})()的主要内容,如果未能解决你的问题,请参考以下文章

浅谈javascript立即调用函数表达式

JavaScript学习:函数表达式

JavaScript函数的两种声明方式

javascript-函数表达式

javascript-函数

JS: 函数提升和变量提升