javascript 为什么要使用匿名函数 或者说 匿名闭包

(function () {}());
2025-05-19 09:19:21
推荐回答(4个)
回答1:

1、相当划出一块私有作用域,避免数据污染。
2、执行完就销毁,避免内存长驻。
var Calculator = function (eq) {
var eqCtl = document.getElementById(eq);
return {
add: function (x, y) { }
};
};
这个函数 跟 (function () {

}());的区别在于返回的add 引用的函数指向内部的定义的那个function(x,y),而它的作用域包含外部那个 function(eq),由于add是全局的,故垃圾回收知道存在引用,故这些函数就会一直存在不会销毁,直到window的环境不存在即浏览器关闭才能释放内存.而匿名的那个执行一次,而本身又没存在外部引用,垃圾回收就会执行~!这就是2者最大区别。
匿名函数最大的用途是来模拟块级作用域,避免数据污染的。

回答2:

1,相当划出一块私有作用域,避免数据污染.
2执行完就销毁,避免内存长驻.
var Calculator = function (eq) {
var eqCtl = document.getElementById(eq);
return {
add: function (x, y) { }
};
};
这个函数 跟 (function () {

}());的区别在于返回的add 引用的函数指向内部的定义的那个function(x,y),而它的作用域包含外部那个 function(eq),由于add是全局的,故垃圾回收知道存在引用,故这些函数就会一直存在不会销毁,直到window的环境不存在即浏览器关闭才能释放内存.而匿名的那个执行一次,而本身又没存在外部引用,垃圾回收就会执行~!这就是2者最大区别.
匿名函数最大的用途是来模拟块级作用域,避免数据污染的,

回答3:

一般情况下我们定义一个var a=4是window环境下的 就相当于全局变量,如果我们定义在匿名函数中的话就把这个全局环境跟window环境隔开了,避免混淆,而且该匿名函数执行完后就直接销毁了这个匿名函数中定义的变量,释放内存了,但是window的不一样的哇 你关了网页才释放。

回答4:

匿名函数执行一次就被销毁了,所以不会在内存中驻留,防止了内存泄露。其次,函数销毁后,防止了其他人调用。