定义:在作用域中找到一个变量,优先在当前的作用域中查找,如果自己的作用域没有的话,会到上级[就看当前作用域在哪里定义的,跟在哪执行的没有关系]查找,如果上级还没有,会一直找到全局,全局也没有会直接报错[xxx is not defined]
浏览器一打开就形成一个全局作用域[会自动生成一个全局对象window],在全局作用域下声明的变量属于全局变量
let a = 1
console.log(a) // 1
function fn(){
console.log(a) // 1
}
fn()
上面代码,在全局声明一个bianl变量a,这个变量属于全局变量,可以在当前全局作用域下的任何地方调用它
函数执行的时候会形成一个私有作用域,私有作用域中声明的变量属于私有变量,同时形参也属于私有变量
function fn(){
let a = 1
console.log(a) // 1
}
fn()
console.log(a) // a is not defined
上面代码中,我们在函数fn中声明一个变量,这个变量属于fn私有作用域的私有变量,只能在函数fn中只用,在外面使用会报错
this是什么?
this是执行主体
我了解的this指向,一共有7种情况
想要学习原型链先记住三句话
原型链__proto__在实例上找一个属性,优先到自己的私有属性上找,如果没有的话通过__proto__找到自己所属类的原型上去查找,如果自己所属类的原型上还没有,再通过__proto__向上一级查找,知道找到Object基类的原型上,,如果还没有直接返回undefined,这种查找机制,我们叫原型链
原文:https://www.cnblogs.com/mengxiangji/p/10575170.html