js 的匿名函数 它是怎么调用的 怎么运作

JavaScript016

js 的匿名函数 它是怎么调用的 怎么运作,第1张

/* 第一种,赋值给变量然后通过变量调用 */

var fun = function(){

}

fun() //调用

/* 第二种就是立即执行,就是在匿名函数后边添加一个括号 */

(function(){

}())//结构一

function(){

}()//结构二

var fun2 = function(){

}()//结构三

方法一适合在任意位置调用,方法二适用于闭包

本节讲解 3 种原生JS的匿名函数。

匿名函数又叫立即执行函数。

因为是匿名的,所以不能被调用。

因为不能被调用,所以不立即执行的话就没意义了。

因为立即执行,所以在执行完之后就会被销毁。

第一种(常用)

( function(){…} )()

第二种(常用)

( function(){…}() )

第三种(不常用)

~function(){…}()

前两种写法,返回值都是正常的。

第三种写法的返回值会比较奇怪,所以很少用。

第一种写法

在控制台输出 1

第二种写法

在控制台输出 2

第三种写法

在控制台输出 -4

在控制台输出2

假设第三种写法的返回值是未知数 x。

则得到的返回值是:-(x + 1)

对于一个js匿名函数

自调用这个匿名函数

这样解释器会报错

为什么呢? 原因可以看一个普通js函数的调用

这是一个函数声明,如果在这么一个声明后直接加上括号调用,解析器不能理解而会报错:

而a函数申明时候,调用就可以直接加 ()

这里可以看出无论是命名函数还是匿名函数,都是函数申明,而直接对匿名函数加 () 之后,解释器就不能理解而报错了

要自调用匿名函数,就需要把匿名函数声明语句变成一个表达式