作用域 this 链等概念 简单点 套路都简单点

我特别不喜欢为了装x把简单的概念弄得很复杂,比如某语言里的i++和++i,断送了多少人的编程热情啊~搞得我现在看到这两玩意儿都条件反射般地格外小心。

作用域:

js里的作用域,一个全局作用域,一个函数(局部)作用域,这不就完事儿了吗?

小范围调大范围里的变量,可以。
大范围调小范围里的变量,想得美。

多简单!


闭包:

有一天我想得美了,想把小范围里的变量搞到手,于是就有闭包了。说白了,闭包就是挖墙脚的,哦,不,闭包是为了函数外部访问函数内部的变量而存在的。

多简单!

哦,这里要说一句:滥用闭包对内存有影响,还挺大的。

this:

这是个调皮的关键词,中英文里有主谓结构,js里也有啊,比如window.alert(),window就是方法alert的执行者。

多简单!

而this总是指向调用这个方法的对象,也就是上面说的主语,方法的执行者,找不到调用对象就指向window。
看到new了?ok,指向new出来的对象就行了。

多简单!


作用域链,原型链,npm包链:
找你老妈要零花钱?要到了:找奶奶要?要到了:找老祖宗要?要到了:报错

看不懂?这么形象的比喻都看不懂?三元操作符啊亲。

作用域链:函数内部有这个变量就用,没有就看外面有没有,看外面的外面...要是到window里都没有,报错。
原型链:实例对象上没有这个属性,看原型上有没有,原型的原型呢,原型的原型的原型呢,到null都没有,哦,null也不可能有,报错。
npm:本地项目目录有没有这个包,没有就去全局找,还没有?报错。

多简单!

原文地址:https://www.cnblogs.com/zhouxiaohouer/p/7905451.html