需要澄清在JavaScript中何时使用引号以及何时不使用引号
我是JavaScript新手,学习codecademy.com上的课程。最近他们引入了括号表示法(与更简单的点表示法相反)。我知道这有很多优点,因为你可以引用那些你用点符号无法引用的东西。然而,我不明白为什么在某些情况下我应该使用引号 例如:需要澄清在JavaScript中何时使用引号以及何时不使用引号,javascript,Javascript,我是JavaScript新手,学习codecademy.com上的课程。最近他们引入了括号表示法(与更简单的点表示法相反)。我知道这有很多优点,因为你可以引用那些你用点符号无法引用的东西。然而,我不明白为什么在某些情况下我应该使用引号 例如: var suitcase = { shorts: "purple" }; if (suitcase.hasOwnProperty("shorts")) { console.log(suitcase.shorts); } 为什么shorts
var suitcase = {
shorts: "purple"
};
if (suitcase.hasOwnProperty("shorts")) {
console.log(suitcase.shorts);
}
为什么shorts在if(手提箱.hasOwnProperty(“shorts”)行中需要在其周围加引号{?我习惯用引号将某个对象指定为字符串。shorts是行李箱对象的属性,因此我认为它将被引用而不带引号。到目前为止,我已经很好地理解了JavaScript的规则,但没有清楚地解释这一点,所以我发现自己很困惑。所有对象的属性名称都只是字符串。您始终可以通过字符串名称引用属性,如
a[“b”]
。唯一的例外是使用
时。在这种情况下,a.b
是一个属性。这相当于a[“b”]
。在所有其他情况下,使用字符串引用属性名称
hasOwnProperty
是一种正常的方法。如果您传入了shorts
而不是“shorts”
,JS会将shorts
视为一个变量。所有对象的属性名称都只是字符串。您始终可以通过字符串名称引用属性,如a[“b”]
。一个例外是使用
时。在这种情况下,a.b
是一个属性。这相当于a[“b”]
。在所有其他情况下,使用字符串引用属性名称
hasOwnProperty
是一个正常的方法。如果您传入了shorts
而不是“shorts”
,JS会将shorts
视为一个变量。hasOwnProperty()
函数需要您要检查的属性的名称。因此,它需要作为字符串传入。如果您不使用引号,javascript将假定您正在传递一个包含属性名称的变量。hasOwnProperty()函数需要您要检查的属性的名称。因此它需要作为字符串传入。如果您不使用引号,javascript将假定您正在传递一个包含属性名称的变量。请考虑以下情况:
var suitcase = {
shorts: 'purple',
shorts: purple
}
是的,它两次分配给“shorts”。但是第一行,即“purple”将一个值为purple
的字符串分配给shorts对象键。第二行,分配一个名为purple
的变量,该变量尚未定义
在Javascript中,上下文就是一切。没有必要引用shorts
部分,因为JS解释器知道您正在定义一个对象键。但是,决定purple
是一个表示颜色的字符串,还是一个名称恰好为purple
的变量,还不够明智。这就是为什么会出现这样的情况tes-提供必要的上下文
hasOwnProperty的情况也一样。如果shorts没有被引用,那么它将被视为一个未定义的变量。如果它被引用,那么它就是一个字符串。考虑一下:
var suitcase = {
shorts: 'purple',
shorts: purple
}
是的,它两次分配给“shorts”。但是第一行,即“purple”将一个值为purple
的字符串分配给shorts对象键。第二行,分配一个名为purple
的变量,该变量尚未定义
在Javascript中,上下文就是一切。没有必要引用shorts
部分,因为JS解释器知道您正在定义一个对象键。但是,决定purple
是一个表示颜色的字符串,还是一个名称恰好为purple
的变量,还不够明智。这就是为什么会出现这样的情况tes-提供必要的上下文
对于
hasOwnProperty
,也是如此。如果shorts没有被引用,那么它将被视为一个未定义的变量。如果它被引用,那么它就是一个字符串。没有引号,javascript将把shorts解释为一个对象,因为shorts是未定义的。hasOwnProperty函数正在寻找字符串类型的属性名称
ReferenceError: shorts is not defined
所以
返回“紫色”
短裤和手提箱不是同一件物品。事实上,在你申报之前,它甚至不是一件物品
shorts = "brown"
这会将短裤的值设置为“棕色”,但手提箱短裤仍为“紫色”
我希望这能澄清这一点。没有引号,javascript将把shorts解释为一个对象,因为shorts是未定义的。hasOwnProperty函数正在寻找string类型的属性名称
ReferenceError: shorts is not defined
所以
返回“紫色”
短裤和手提箱不是同一件物品。事实上,在你申报之前,它甚至不是一件物品
shorts = "brown"
这会将短裤的值设置为“棕色”,但手提箱短裤仍为“紫色”
我希望这能澄清这一点。您的示例与以下示例相同:
suitcase = new Object();
suitcase.shorts = 'purple';
suitcase.hasOwnProperty('shorts'); //returns true
始终记住,javascript中未包含在qoutes
中的参数/参数是可变的。实际上,不仅仅是javascript,所有语言都是可变的。不要将自己与变量混淆
Javascript需要一个变量shorts
var shorts = 'shorts';
suitcase.hasOwnProperty(shorts); //returns true
您的示例与以下示例相同:
suitcase = new Object();
suitcase.shorts = 'purple';
suitcase.hasOwnProperty('shorts'); //returns true
始终记住,javascript中未包含在qoutes
中的参数/参数是可变的。实际上,不仅仅是javascript,所有语言都是可变的。不要将自己与变量混淆
Javascript需要一个变量shorts
var shorts = 'shorts';
suitcase.hasOwnProperty(shorts); //returns true
当你输入一个变量时,你不会引用它,所以只有字符串和参数需要引用?我试图理解这里的基本规则。它是如何定义的?Shorts是对象下的一个参数。我想我不明白是什么使它被定义或未定义。当你输入一个变量时,你不会引用它,所以只有字符串和参数参数需要报价吗?我想了解