我想修改以下代码,从'a'变量列出“hello world”,而不将其传递给函数。有可能吗?
var a = "declared variable";
var fc = function () {
console.log(a);
};
(function () {
var a = "hello world";
fc();
}) ();
编辑:对不起......我没有提到。我不想修改全局变量。我只想获得“范围”变量值。
答案 0 :(得分:1)
只需删除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({});
从技术上讲,这不是你传递的范围,但这就是它的完成方式。
答案 1 :(得分:0)
让我给你一个替代答案。 不要那么做。这是一个丑陋的黑客,它会更快或更早地破解,很难调试并会让你失望。不要懒惰,绕过那个该死的价值,从长远来看,它会为你节省很多时间。
所以我的回答是,如果不通过a
,你无法正确地实现你想要的东西。
答案 2 :(得分:-1)
你可以这样做。
window.a = "Hello world"
答案 3 :(得分:-1)
var a = "declared variable";
var fc = function () {
console.log(a);
};
(function () {
var a = "hello world";
this.a = a; // assign a to global a
fc();
}) ();