名词笔记
程序员文章站
2022-07-14 14:27:28
...
遮蔽效应
多层嵌套的作用域中可以定义同名的标识符。因为作用域的不同也就会出现不同的值
var a = 1 ;
function Aa(){
a = 2;
}
console.log(a);
Aa();
console.log(a); //1,2
当 Aa() 中的作用域覆盖下来,a的值变为了2。
无论函数在哪里被调用,无论它如何被调用,词法作用域都只由函数被声明时所处的位置决定。
欺骗词法
注:欺骗词法作用域会导致性能下降,大量使用运行会非常慢。
- javaScript 的 eval() 会将传入的字符串当做 JavaScript 代码进行执行
- with 不推荐使用
function foo(str, a){
eval(str);
console.log(a, b);
}
foo('var b = 2', 1); //1,2
动态生成的变量,但是在严格模式下无法使用。报错 ReferenceError ;
还有一种 new Function(…)可接受最后一个参数
with:可以用来欺骗词法作用域,也可以被当做重复引用同一个对象中多个属性的快捷方式,可以不需要重复引用对象本身。
上一篇: 用户身份验证(四)