码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-08-26 04:54:04      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:def   开头   png   func   script   div   表达式   xxxx   span   

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‘);
}();

技术分享

 先来给大家看一个小例子:

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

输出:undefined  和   2;

第一个console.log讲解:因为function属于一个函数表达式,花括号里面的作用域访问不了外面的作用域,所以是undefined

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

标签:def   开头   png   func   script   div   表达式   xxxx   span   

原文地址:http://www.cnblogs.com/hezihao/p/7429817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!