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