今天收到RSS订阅中有一篇<Javascript – Arraylike的7种实现>,看第一种实现方式是,瞬间被!function(){}()这种匿名函数自执行方式给亮瞎了眼睛.这种写法绝对是装逼神器,代码如下: !function () { //通过闭包实现 var List = function () { var list = [], self = { constructor: List, //如果希望更像原生一点,将length定义为属性,那么length则需要自己维护 length:
重新看了下闭包,在javascript高级程序设计第二版里的闭包里有如下例子,例子中介绍说匿名函数的执行环境具有全局性和this指向window,对于这句话很费解,所以就想个方法验证下. var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; alert(obje
JS函数有两种命名方式 1.声明式 声明式会导致函数提升,function会被解释器优先编译.即我们用声明式写函数,可以在任何区域声明,不会影响我们调用. function XXX(){} 2.函数表达式 函数表达式我们经常使用,而函数表达式中的function则不会出现函数提升.而是JS解释器逐行解释,到了这一句才会解释. 因此如果调用在函数表达式之前,则会调用失败. var k = function(){} fn1(); function fn1(){}//可以正常调用 fn2(); var