立即执行函数(针对初始化功能的函数,执行完就会被释放):
只有表达式,才能被执行,如下,函数声明不能被执行:

而下面的声明式则可以被执行:

能被执行符号执行的表达式,这个名字就会被忽略,如下表达式的执行相当于一个立即执行函数,执行完之后就被释放了:


函数声明前加上加减或者“!”号就会变成表达式:



应用:

结果为:

这是因为,在test的for循环里,只有赋值,并没有运行,故每一遍循环都是相当于arr[i]=function(){ document.write(i) },即arr[1]=function(){ document.write(i) } ,arr[2]=function(){ document.write(i) }......arr[9]=function(){ document.write(i) },当i变成10的时候,停止循环。
在myArr[j]才是执行的时候,i已经变成了10,当myArr[0]到myArr[9]执行的时候,i都是10,故打印出来了10个10。
如果要使打印出来的结果为0-9,可以使用立即执行函数:

结果如下:

浙公网安备 33010602011771号