我特别不喜欢为了装x把简单的概念弄得很复杂,比如某语言里的i++和++i,断送了多少人的编程热情啊~搞得我现在看到这两玩意儿都条件反射般地格外小心。
作用域:
js里的作用域,一个全局作用域,一个函数(局部)作用域,这不就完事儿了吗?
小范围调大范围里的变量,可以。
大范围调小范围里的变量,想得美。
多简单!
闭包:
有一天我想得美了,想把小范围里的变量搞到手,于是就有闭包了。说白了,闭包就是挖墙脚的,哦,不,闭包是为了函数外部访问函数内部的变量而存在的。
多简单!
哦,这里要说一句:滥用闭包对内存有影响,还挺大的。
this:
这是个调皮的关键词,中英文里有主谓结构,js里也有啊,比如window.alert(),window就是方法alert的执行者。
多简单!
而this总是指向调用这个方法的对象,也就是上面说的主语,方法的执行者,找不到调用对象就指向window。
看到new了?ok,指向new出来的对象就行了。
多简单!
作用域链,原型链,npm包链:
找你老妈要零花钱?要到了:找奶奶要?要到了:找老祖宗要?要到了:报错
看不懂?这么形象的比喻都看不懂?三元操作符啊亲。
作用域链:函数内部有这个变量就用,没有就看外面有没有,看外面的外面...要是到window里都没有,报错。
原型链:实例对象上没有这个属性,看原型上有没有,原型的原型呢,原型的原型的原型呢,到null都没有,哦,null也不可能有,报错。
npm:本地项目目录有没有这个包,没有就去全局找,还没有?报错。
多简单!