2016-11-25 47 views
-2

要么你说' - '作为减法表达式。为什么我们需要使用[]来访问变量名包括hyphan?

例如, Json = {'Me-m':123}

但是你有没有想过为什么我们需要使用[]来访问这个连字符变量。

就像那样Json['Me-m']

+2

你的问题的第一句话就是答案。它将被视为减法运算符。 – Quentin

+0

要使用[点符号](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/Property_accessors#Dot_notation),您需要一个有效的[标识符](https://developer.mozilla.org/docs/Glossary/Identifier),其中'Me-m'不是。 – Yoshi

回答

1

书面方式

Json.Me-m 

将评估为

Json.Me - m 

它会尝试从JSON对象访问我的财产,减去m个可变,这将可能是不确定的。

0

这是因为“ - ”在JavaScript中的意义,因此,如果你写Json.Me-m JavaScript的解释:“变量m的值。减去对象``Json`的属性Me的价值”。

在JavaScript中,您可以访问名称的对象的任何成员,使用[],并在字符串中,JavaScript是不打算尝试评估什么,所以当你写Json[我-M ],它解释为: '检索对象的名称Me-m的值Json'

0

原因很简单:在Javascript中,每个对象都是一个索引键/值字典,使用“。”访问变量。这是一个捷径,显然“字典对象”这是一个性能问题的事实,但尽管如此,JavaScript与其他脚本语言相比非常快。

回答你的问题,通过设计一个索引可以是一个包含“ - ”字符的字符串,但不是一个属性...所以如果你有一个属性与该字符,它将无法用“。 “符号。

1

因为我-M是不被用作属性,因此你不得不使用的地图阅读this或检查here一个有效的PROPERT名有效的属性名称

0

因为你传递一个特殊字符键obj的一部分,为了访问obj的值,我们需要使用[]。 例如。 json ['Me-m']

相关问题