在这里调用calcArea函数,该函数的作用域应该在它定义的范围内,但是它的作用域具有变量sideLength,为什么会出错?

var square = {
    sideLength: 6,
    calcArea: function () {
        console.log(sideLength * sideLength);
    }
};
square.calcArea();


你能帮助我吗?



var square = {
    sideLength: 6,
    calcArea: function () {
        console.log(this.sideLength * this.sideLength);
    }
};
square.calcArea();


没关系,抱歉我的英语不好。

最佳答案

示例中有三个作用域-全局作用域(包含控制台),对象作用域(包含sideLength和calcArea)和函数作用域(空)。 sideLength是对象属性,未在函数范围内定义变量sideLength。您可以使用点符号(square.sideLength === 6)访问对象属性,并可以通过特殊对象“ this”(this.sideLength)从对象内部(即,运行对象的方法时)访问“兄弟”属性。 === 6)。

09-11 18:21