Javascript 覆盖全局变量
我想修改以下代码,从'a'变量中列出“hello world”,而不将其传递给函数。可能吗Javascript 覆盖全局变量,javascript,scope,global,overriding,local-variables,Javascript,Scope,Global,Overriding,Local Variables,我想修改以下代码,从'a'变量中列出“hello world”,而不将其传递给函数。可能吗 var a = "declared variable"; var fc = function () { console.log(a); }; (function () { var a = "hello world"; fc(); }) (); 编辑:啊,对不起。。。我没有提到。我不想修改全局变量。我只想得到“scope”变量值。您可以这样做 window.a = "Hello world
var a = "declared variable";
var fc = function () {
console.log(a);
};
(function () {
var a = "hello world";
fc();
}) ();
编辑:啊,对不起。。。我没有提到。我不想修改全局变量。我只想得到“scope”变量值。您可以这样做
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({});
从技术上讲,这不是你要讨论的范围,但这是如何做到的。让我给你一个替代答案永远不要这样做。这是一个很难看的黑客程序,迟早会被破解,很难调试,而且会让你慢下来。不要偷懒,传递那个该死的值,从长远来看,它会为你节省很多时间
var a = "declared variable";
var fc = function () {
console.log(a);
};
(function () {
var a = "hello world";
this.a = a; // assign a to global a
fc();
}) ();
所以我的答案是,如果不传递
a
它丢失“声明变量”
值,你就无法正确实现你想要的。不要做Op要求的事情。谢谢你的回答,顺便问一下如何通过参数传递作用域?你能举个例子吗?编辑:nvm: