Javascript 为什么不定义变量?

Javascript 为什么不定义变量?,javascript,Javascript,这里调用calcArea函数,函数的作用域应该在它的定义范围内,但是它的作用域有变量边长,为什么会出错 var square = { sideLength: 6, calcArea: function () { console.log(sideLength * sideLength); } }; square.calcArea(); 你能帮我吗 及 没关系,抱歉我的英语不好。这里: var square = { sideLength: 6, calcAr

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

var square = {
    sideLength: 6,
    calcArea: function () {
        console.log(sideLength * sideLength);
    }
};
square.calcArea();
你能帮我吗

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

这里:

var square = {
sideLength: 6,
calcArea: function () {
    console.log(sideLength * sideLength);
    }
}
square.calcrea()
是一个
成员/方法
,它只能被
对象访问
,这就是为什么它在
第二个对象
中不起作用的原因,因为您使用
作为
当前对象
来访问它

var square = {
sideLength: 6,
calcArea: function () {
    console.log(this.sideLength * this.sideLength);
    }
}
square.calcArea();
 it works because you are using this.sideLength.

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

变量
sideLength
不存在。它是方形对象的属性。这就是为什么访问它需要
这个
,但是在console.log()中,边长不是square.sdieLength?我想知道为什么。为了准确起见,我们不要把
calcrea
a称为“财产id”。准确地说,它应该被称为“属性”、“成员”或“方法”。如果你想引用字符串“calcArea”作为键,它应该被称为“属性名”。@torazaburo明白了,先生。准确地说,不是说“你可以从对象内部访问‘同级’属性…”,而是说“你可以从对象的方法内部访问‘同级’属性”更准确.明白了。谢谢。我把功能范围和对象范围混淆了。:-)
var square = {
sideLength: 6,
calcArea: function () {
    console.log(this.sideLength * this.sideLength);
    }
}
square.calcArea();
 it works because you are using this.sideLength.