模仿全局变量
javascript 为什么要使用匿名函数 或者说 匿名闭包
(function () { }());
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者最大区别. 匿名函数最大的用途是来模拟块级作用域,避免数据污染的,
-
追问
-
add 为什么是全局的?
-
回答
-
抱歉把这里看成返回函数了,这里add只是属性依附所存在对象 ,非全局的~!不过在js中只有2个变量类型,全局变量和局部变量. js规定:所有没用var申明的变量,一律会自动申明为全局变量,所以最好还是明确申明变量. 但有一种情况即使申明了,但还是全局那就是在window中申明,因为那是顶级对象,js中一切都是在window对象下实现的~!
-
提问者评价
-
。。。 我居然么有选满意答案。。 我的
评论
|
赞同1