标签: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