我想修改下面的代碼,從'a'變量列出「hello world」,但不將它傳遞給函數。可能嗎?覆蓋全局變量
var a = "declared variable";
var fc = function() {
console.log(a);
};
(function() {
var a = "hello world";
fc();
})();
編輯:啊抱歉...我沒有提到。我不想修改全局變量。我只想獲得「範圍」變量值。
我想修改下面的代碼,從'a'變量列出「hello world」,但不將它傳遞給函數。可能嗎?覆蓋全局變量
var a = "declared variable";
var fc = function() {
console.log(a);
};
(function() {
var a = "hello world";
fc();
})();
編輯:啊抱歉...我沒有提到。我不想修改全局變量。我只想獲得「範圍」變量值。
你可以這樣做。
window.a = "Hello world"
只需卸下var
var a = "declared variable";
var fc = function() {
console.log(a);
};
(function() {
a = "hello world";
fc();
})();
的VAR定義在當前的範圍內可變。
作爲對編輯的反應,訪問作用域的唯一方法是在其中(或將其作爲參數傳遞)。因爲你不想傳遞它,這是我看到的唯一的其他選項。
var a = "declared variable";
(function() {
var fc = function() {
console.log(a);
};
var a = "hello world";
fc();
})();
或者,如果你想要通過範圍沿着這樣的結構將工作
var a = "declared variable";
var fc = function (scope) {
console.log(scope.a);
};
(function() {
this.a = "hello world";
fc(this);
}).apply({});
非常技術上說這不是你一起傳遞的範圍,但如何它會完成。
感謝您的回答,順便說一句,如何通過論據傳遞範圍?你能舉個例子嗎?編輯:nvm:http://stackoverflow.com/questions/6348852/javascript-pass-scope-to-another-function – user1855877
非常感謝。 – user1855877
var a = "declared variable";
var fc = function() {
console.log(a);
};
(function() {
var a = "hello world";
this.a = a; // assign a to global a
fc();
})();
沒有做Op的要求。 –
讓我給你一個替代的答案。 千萬不要這樣做。這是一個醜陋的破解,它會更快或更快地破解,它很難調試,並會減慢你的速度。不要懶惰,繞過那個該死的價值,從長遠來看它會爲你節省大量時間。
所以我的答案是,你不能沒有經過a
正常,你想要的東西實現。
它是否可以,如果它失去了''聲明變量「'價值? –