2016-11-25 42 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']

相關問題