欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

名词笔记

程序员文章站 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:可以用来欺骗词法作用域,也可以被当做重复引用同一个对象中多个属性的快捷方式,可以不需要重复引用对象本身。