如何做购物券网站,黄页88怎么发信息质量高,android应用开发基础,易语言怎么做ifa网站填表1.什么是作用域 作用域是用于收集存储维护变量#xff0c;以及当前执行代码声明的变量所拥有的权限#xff0c; 例如 #xff1a; function foo(a){ console.log(a); -------- 1 }; foo(666); console.log(a); ------- 2 此时执行该段代码 1 -- 处打印我们得… 1.什么是作用域 作用域是用于收集存储维护变量以及当前执行代码声明的变量所拥有的权限 例如 function foo(a){ console.log(a); -------- 1 }; foo(666); console.log(a); ------- 2 此时执行该段代码 1 -- 处打印我们得到 666 因为在函数中声明了 a 参数 且执行foo函数像里面传入666就相当于将a赋值为666 所以console.log 查询a可以获得666 2 --处打印我们获取一个报错 Uncaught ReferenceError: a is not defined 说a没有定义这是为什么呢. 2.1 首先我们来说明下LHS 查询和RHS查询书上给的解释是 赋值操作的左侧或右侧 我的理解是 LHS --- 被赋值的变量 RHS --- 查询变量的值 且这两种查询都是从本身所在作用域向上冒泡查询直到遇到定义的变量位置 不同的是 1.RHS 在本作用域查询变量遇到不存在需要查询的变量则逐级向上一级作用域查询查到则停止否则直到到window作用域还没有查到则会返回一个 xxx is not defined 2.LHS 在本作用域查询变量遇到不存在需要查询的变量则逐级向上一级作用域查询查到则停止 到window作用域还没有查到则会默认再window 全局变量处偷偷的创建这个需要查询的变量 下面用一段简单的代码来说明 LHS 和 RHS function foo1(a){ console.log(g) //这里将会出现报错 g is not defined 因为这里执行的RHS查询 ,在查询g的时候发现foo作用域没有所以向他的上一级window对象内查询也没有存在所以返回not defined console.log(a g); g a; } foo1(666); function foo2(a){ g a; //在FOO2函数中 a向g赋值 此时g在foo2作用域中也不存在他也向上查询遇到window对象发现其中也没有定义g 变量但是此时呢他就在window对象中创建了一个g对象所以window对象中就有这个变量 console.log(a g); ----- 打印控制台获得 4 } foo2(2); //如果将foo2中 g a 换成 a g 会怎样呢 --- 大家可以试试哦 更多专业前端知识请上
【猿2048】www.mk2048.com