我想修改以下代码以从“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();
}) ();
编辑:啊对不起......我没有提到。我不想修改全局变量。我只想获得“范围”变量值。
只需删除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({});
从技术上讲,这不是您传递的范围,但这就是它的完成方式。
让我给你一个替代的答案。永远不要那样做。这是一个丑陋的 hack,迟早会坏掉,它很难调试并且会减慢你的速度。不要偷懒,传递那个该死的价值,从长远来看,它会为你节省很多时间。
所以我的回答是,如果不通过,您将无法正确实现您想要的a
。
var a = "declared variable";
var fc = function () {
console.log(a);
};
(function () {
var a = "hello world";
this.a = a; // assign a to global a
fc();
}) ();
你可以这样做。
window.a = "Hello world"