立即执行函数,声明式函数

来源:互联网 发布:pandorabox安装python 编辑:程序博客网 时间:2024/05/01 10:50
这种写法叫立即执行函数。一般我们定义一个函数,如:
function A(){
alert('s');

}
这个函数不会执行,如果需要定义完一个函数,马上执行。就要写成这样的:
(function A(){alert('s');})();
最后面的小括号表示调用的意思,函数被一个括号包裹起来表示这是一个整体,如果没有这个括号,js引擎可能以为这个是函数声明。这种写法并不是唯一的。

!function A(){alert('s');}();

-function A(){alert('s');}();

+function A(){alert('s');}();

~function A(){alert('s');}();

这些都是,前面的符号只要告诉js引擎这一行是一个表达式,而不是函数声明都可以。

var A=function(){};

function A(){}


var foo=function(){}称之为函数表达式 定义函数,function foo(){}称之为函数语句 定义函数。
后者会预先编译;前者则必须执行后面语句后才会对foo添加调用。

这两种写法还是有区别的,解析的顺序不同。js永远先解析声明式函数,然后再解析var声明的变量。还是以上面的写个例子:
//如果这里调用A();肯定是声明式函数执行,弹出2。如果没有声明式函数,则报错。

var A=function(alert('1')){};
//如果这里调用A(),弹出1。var声明的变量会覆盖声明式函数。

function A(){alert('2')};//永远先解析
0 0
原创粉丝点击