JS的with关键字到底是什么?

with关键字

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都是禁止的,因此不要使用。

猜你喜欢

转载自www.cnblogs.com/wljqds/p/11273733.html
今日推荐