我想用“apfala”
访问变量var frucht="apfala";
function getFrucht(frucht){
console.log(frucht);
console.log(this.frucht) // I want here the apfala one, I thought .this would work
}
getFrucht("apfel");
或者我是否必须以不同方式重命名?
答案 0 :(得分:1)
如果您的javascript在浏览器中运行,您可以使用window
全局变量来访问在全局范围中定义的变量frucht
:
var frucht="apfala";
function getFrucht(frucht){
console.log(frucht);
console.log(window.frucht) // I want here the apfala one, I thought .this would work
}
getFrucht("apfel");
答案 1 :(得分:1)
如果是全局和,则表示您正在浏览器中运行:
您可以使用window.frucht
作为全局变量是window
对象的属性。
虽然不重复使用相同的变量名称会更好。它避免了对全局变量的依赖以及重用名称的混淆。
答案 2 :(得分:1)
一般来说,在JavaScript中,如果要将父作用域传递给子作用域,则需要将父作用域中的this
分配给变量并访问子句中的该变量:
var frucht="apfala";
var parent = this;
function getFrucht(frucht){
console.log(frucht);
console.log(parent.frucht);
}
getFrucht("apfel");
此外,如其他答案中所述,如果您在浏览器中工作,只需使用window
对象附加和访问全局变量(window.frucht="apfala"
,然后使用window.frucht
访问那个变量)
希望有所帮助。
答案 3 :(得分:1)
http://eslint.org/docs/rules/no-shadow
阴影是局部变量共享相同的过程 将name命名为其包含范围中的变量。例如:
var a = 3; function b() { var a = 10; }
在这种情况下,b()内部的变量a遮蔽了变量a 在全球范围内。这可能会在阅读代码时造成混淆 并且无法访问全局变量。
您的代码建议您需要重新考虑您要做的任何事情。由于目前还不清楚你要做什么的真实性质,很难为你的问题建议一个替代解决方案(除了不影子或使用全局),如果你有一个而不仅仅是好奇心?
请不要这样做,但这应该适用于所有环境。
'use strict';
var getGlobal = Function('return this');
getGlobal().frucht = 'apfala';
function getFrucht(frucht) {
console.log(frucht);
console.log(getGlobal().frucht); // I want here the apfala one, I thought .this would work
}
getFrucht('apfe');