我的前言說我知道使用with
是非常不鼓勵,我也不打算使用它。我只是想知道它是如何工作的(我試圖找出javascript中的範圍)。變量聲明在一個With塊
如果我有一些像這樣的代碼:
function foo(obj) {
with (obj) {
b = 2;
}
}
var o1 = {
a: "something"
};
foo(o1);
console.log(o1.b) // This outputs undefined (makes sense)
console.log(b) // This outputs 2 (makes sense)
但是,如果我改變富來是這樣的:
function foo(obj) {
with (obj) {
var b = 2; // I use var b instead of b
}
}
當我通過O1爲foo,再次,O1沒有屬性b。爲什麼是這樣?我認爲使用var
會在obj的範圍內聲明b,所以該屬性將在o1中而不是在全局範圍內創建。