var x = "haha"; var test = function(){ alert(this.x); } 上述,则会弹出 haha的值. 因为在JavaScript的变量作用域里有一条规则“全局变量都是window对象的属性”. 所以当执行test();方法时,相当于执行window.test(); 所以test方法中的this相当于指向了window对象,而window对象又有x变量. 即:this所在的函数是当作哪个方法的对象所调用的,即该对象就是this所引用的对象. 参
前几天,和朋友聊天,聊到一些js的基础的时候,有一种‘好像知道,好像又不不知道怎么讲的感觉’...于是捡起书,自己理一理,欢迎拍砖. 闭包 理解闭包首先要理解,js垃圾回收机制,也就是当一个函数被执行完后,其作用域会被收回,如果形成了闭包,执行完后其作用域就不会被收回. 如果某个函数被他的父函数之外的一个变量引用,就会形成闭包 闭包的作用,就是保存自己私有的变量,通过提供的接口(方法)给外部使用,但外部不能直接访问该变量. 例子(使用闭包): var test=(function(){ va
在JS中仅仅区分全局变量和局部变量还不够,实际上,变量作用域可以有任意层级(嵌套).其他函数内部定义的函数可以调用父函数的局部变量,而内部函数里定义的函数则不仅可以调用父函数的局部变量,还可以调用祖父函数的局部变量. //定义一个函数接收正数number,然后将其和参数factor相乘 function multiplyAbsolute(number,factor){ function multiply(number){ return number*factor; } ) return mult