console.log( a ); var a = 2; 执行输出undefined a = 2; var a; console.log( a ); 执行输出2 说明:javaScript 运行时在编译器阶段会最先处理var a;也就是变量被提升 foo(); function foo() { console.log( a ); // undefined var a = 2; var a = 2; } 执行输出undefined,执行foo();时找到了函数的声明,但实际代码写在foo()的后面…
Hi All, 分享一下我学JS & JQuery的读书笔记: JS的3个不足:复杂的文档对象模型(DOM),不一致的浏览器的实现和便捷的开发,调试工具的缺乏. Jquery的选择器 a. 基本选择器:通过Id, class, tag Name来选择元素 b. 层次选择器:获取的是后代元素,子元素,相邻元素,同辈元素 1) $(“div span”)获取的是div下所有的span元素: 2) $(“div > span”)获取的是div下元素名是span的子元素 3) $(“.one +…
[[Prototype]]机制 [[Prototype]]是对象内部的隐试属性,指向一个内部的链接,这个链接的作用是:如果在对象上没有找到需要的属性或者方法引用,引擎就 会继续在 [[Prototype]] 关联的对象上进行查找.同理,如果在后者中也没有找到需要的 引用就会继续查找它的 [[Prototype]],以此类推.这一系列对象的链接被称为“原型链”. function Foo() { // ... } var a = new Foo(); Object.getPrototypeOf(…
function foo() { console.log( a ); } function bar() { var a = 3; foo(); } var a = 2; bar(); 上面这段代码为什么会输出2,而不是3?因为javaScript 只有词法作用域,foo()的定义在全局作用域,执行时会在它所在词法作用域查找变量a this 的作用域 function foo() { var a = 2; this.bar(); console.log(this) } function bar()…
什么是闭包 闭包是javaScript语言的一种特性,在 javaScript 中以函数作为承接单元.当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行. function foo() { var a = 2; function bar() { console.log( a ); } bar(); } foo(); bar() 产生了闭包,但是由于它内嵌在foo函数里面执行,bar中对a的引用遵循了词法作用域的查找规则,其实也是闭包查询规则的一部分. fun…