作用域和上下文
对于一个作用域来说,它只是一个封装的环境,他的this 指向它本身以及当它自己被调用后的对象,比如 使用 call、apply
上下文指的是当前的作用域和包裹在它外面的作用域。上下文会根据当前作用域调用时候的环境不同,上下文也会跟着相应改变(比如当前作用域可以调用的变量会变不同)(作用域链)
(()=>{
function foo() {
this.saySomething('good');
}
let obj1 = {
saySomething: function (x) {
console.log( 'im form obj1' + x);
}
}
let obj2 = {
saySomething: function (x) {
console.log( 'im form obj2' + x);
}
}
foo.call(obj1);
foo.call(obj2);
})();
一个变量被使用但是没有在当前作用域找到申明,那它会向上一级一级的查询,直到直到全局作用域,还是没有找到报错变量 not defined
(()=>{
// let sum = 20;
function add() {
function save() {
console.log(sum, 'sum')
}
save();
}
add();
})();