JavaScript -- 作用域
(function() { // let i = 0; // 函数作用域 1 // for (let i = 0; i < 4; i++){ // 块级作用域 2 // for (var i = 0; i < 4; i++){ // 函数作用域 存在变量提升,不管var 变量定义在函数的哪个位置,都会被提升到函数最上面 3 for (i = 0; i < 4; i++){ // 全局作用域 1 4 console.log('块i', i) // 1 2 3 4 每种情况都会正常执行 } console.log('函数i', i); // 1 3 情况会正常执行 })(); console.log('全局i', i); // 4 情况会正常执行
@、嵌套函数中的 this
var obj = { myname: 'obj', outFunc: function() { self = this; console.log(self.myname); // obj function innerFunc() { console.log(this.myname); // undefined 这里的this指向的是window console.log(this); // Window console.log(self.myname); // obj } innerFunc(); } } console.log(obj.myname); // obj obj.outFunc();