我希望我的代码给我“2”作为输出,但这显示“1”作为输出。 请告诉我我的代码中必须做哪些更改才能给出正确的结果。
var a = 1;
function x() {
var a = 2;
function b() {
var self = this;
console.log(self.a);
}
b();
}
x();
答案 0 :(得分:5)
全局变量是window
对象的属性,因此self.a
为您提供1
,因为self
为window
。 (进一步阅读:How does the “this” keyword work?)。
局部变量不是任何对象的属性。无法访问它们,就好像它们是对象的属性一样。只需记录a
而不是self.a
。
答案 1 :(得分:0)
尝试使用以下代码将“2”打印到浏览器控制台。在这里,我将函数x更改为对象。在这里我添加了“a”作为属性,“b”作为函数添加。然后最后将b()函数称为“x.b()”。
var a = 1;
var x=
{
a :2,
b: function()
{
var self = this;
console.log(self.a);
}
}
x.b();
答案 2 :(得分:-3)
试试这个:
var a = 1;
function x() {
a = 2;
function b() {
var self = this;
console.log(self.a);
}
b();
}
x();