JS匿名执行函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS匿名执行函数相关的知识,希望对你有一定的参考价值。

一、匿名函数的创建

第一种:(调用sum后可执行)

var sum=function(x,y){

return x+y;

}

第二种:(可自执行)

void function(x,y){

}(1,2);

自执行的匿名函数

    1. 什么是自执行的匿名函数?
    它是指形如这样的函数: (function {// code})();
    2. 疑问
    为什么(function {// code})();可以被执行, 而function {// code}();却会报错?
    3. 分析
    (1). 首先, 要清楚两者的区别:
    (function {// code})是表达式, function {// code}是函数声明.
    (2). 其次, js"预编译"的特点:
    js在"预编译"阶段, 会解释函数声明, 但却会忽略表式.
    (3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错;
    当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到();时, 便会被执行.

   另外, 函数转换为表达式的方法并不一定要靠分组操作符(),我们还可以用void操作符,~操作符,!操作符……

如:

void function(x,y){
alert("fdf");
}(1,2);

!function(x,y){
alert("fdf");
}(1,2);

 

以上是关于JS匿名执行函数的主要内容,如果未能解决你的问题,请参考以下文章

js 自执行匿名函数(转载)

JS执行顺序-函数声明提升匿名函数函数表达式

js匿名函数

js基础之javascript函数定义及种类-普通涵数-自执行函数-匿名函数

关于js的闭包和匿名函数

Js基础知识6-JavaScript匿名函数和闭包