标签:fun eval 一个 var cti with 方式 重复 func
with在JS中通常被当做重复引用同一个对象多个属性的快捷方式。
var obj = {
a: 1,
b: 2,
c: 3
};
with (obj) {
a = 3;
b = 4;
c = 5;
}
但会有奇怪的副作用,比如:
function foo (obj){
with (obj) {
a: 2;
}
};
var o1 = { a: 3 };
var o2 = { b: 3 };
foo(o1);
console.log(o1.a); // 2
foo(o2);
console.log(o2.a); // undefined
console.log(a); // 2,a可以从全局访问到!变量泄漏!
严格模式下,eval和with都是禁止的,因此不要使用。
标签:fun eval 一个 var cti with 方式 重复 func
原文地址:https://www.cnblogs.com/wljqds/p/11273733.html