在这里调用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)。