自执行函数

  • Post author:
  • Post category:其他




function(){}()错误原因

首先说说

function(){}();

写法错误的原因。

js有预编译的阶段。这个阶段只对变量声明进行编译。也就是为什么var变量声明可以写在使用之后的原因。

该阶段编译function开头部分均认为时一个函数声明。那么在函数声明阶段,时不可以声明一个没有名字的函数,也不可以用括号结尾的。也就是说以下两种方式的声明都会被认为时语法错误。

1、没有名字的函数
function(){};
2、括号结尾的函数
function a(){}();

解决办法就是,不让function作为开头。用括号或者其他符号使其变成一个表达式。

那么在第二阶段表达式编译的时候就可以正常执行啦。



自执行函数的意义

如果声明一个全局变量给函数赋值,那么函数地址是被变量引用的。这个函数以字符串的形式存在于堆内存之中。这样的好处是随时需要随时可以引用执行。

那如果这个函数我只准备执行一次,我自然不需要让这个函数占着内存。所以写一个匿名函数,执行一次释放了就行了。匿名函数怎么用,没有存着地址,只能在创建的时候用自执行来使用了。

当然,手动把变量的引用释放掉也是可以的。js会自动回收内存。

另一个意义就是 创造一个私有作用域。防止变量相互污染。可以联合闭包一起用。这个时候的自执行函数占用的栈内存不会被释放掉,而是形成了一个独立空间来存私有变量。



版权声明:本文为qq_41786954原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。