我们无法更改以下代码:
var t = 10;
function test(){
var t = 20;
alert(this.t);
}
我们必须更改或添加以下内容。
test();
上面的函数调用执行10;
我需要在功能测试中定义“20”。
答案 0 :(得分:3)
由于您无法更改此功能,因此可以执行此操作
test = test.bind({t: 20});
test();
或单行
test.bind({t: 20})();
答案 1 :(得分:3)
你可以这样做:
test.call({t:20});
答案 2 :(得分:2)
看起来您需要了解JS如何解析名称(即通过范围扫描),以及this
关键字的绑定方式。 I've dealt with this in detail here,并与其他资源相关联,详细介绍了几个方面。
它的长短是你的功能应该是这样的:
function f ()
{
var t = 20;
alert(t);//console.log would be better, though
}
根据代码,您无法获得var
值。您必须更改一些代码,或更改调用函数的方式:
var obj = {t: 20, test: test};//test is the function name:
obj.test();//this.t will reference obj.t now
阅读链接的答案为何以及如何运作
答案 3 :(得分:0)
如果你调用test()
它将作为一个函数而this
将是全局对象(窗口)。如果您添加new
关键字(new test();
),那么它将是一个对象,this
将引用该对象。但是你还需要在这里存储:
function test(){
this.t = 20;
alert(this.t);
}
new test();
或者您可以将其存储在var中并使用该var:
访问它function test(){
var t = 20;
alert(t);
}
test();
答案 4 :(得分:0)
你可以这样做:
alert(20);
说真的,你可能误解了老师的指示。