2017-04-21 59 views
2

我在訪問對象時看到了很多關於括號vs點符號的線程....但是,我正在通過freeCodeCamp,當我訪問一個語法如SomeonesName['online']的對象時,它會建議我應該使用點符號?Javascript建議點符號?

除了速度更快.....究竟有什麼好處?我見過的所有減去「速度」似乎意味着支架符號更好?

有什麼我失蹤了嗎?或許「點」運算符做得更好的另一件事是什麼?

+0

你見過的什麼暗示括號表示法更好?大多數風格指南和/或標準lint規則集鼓勵/推薦/要求點符號儘可能。 – 2017-04-21 02:08:32

+0

我見過一些人使用縮小器來縮短變量,以便在發佈前減少代碼文件的大小,但保持[「字符串」]不變,所以他們會使用括號作爲公共變量。 –

回答

3

經驗法則非常簡單。每次你可以使用點符號,使用它。當您必須操作無效的JavaScript標識符或需要傳遞變量鍵時,只需使用括號表示法。考慮下面的例子:

var obj = { 
 
    foo: "Foo", 
 
    _bar: "Bar", 
 
    $baz: "Baz", 
 
    "foo-bar": "Foo Bar", 
 
    quux: "Quux" 
 
}; 
 
    
 
console.log(obj.foo); 
 
console.log(obj._bar); 
 
console.log(obj.$baz); 
 
console.log(obj['foo-bar']); 
 
    
 
var quux = "quux"; 
 
    
 
console.log(obj[quux]);


值可以從一個目的是通過在[]後綴包裝字符串 表達式檢索。如果字符串表達式是字符串 ,並且如果它是一個合法的JavaScript名稱而不是保留字,則 則爲。符號可以用來代替。這個。首選 ,因爲它更緊湊,讀取更好。

道格拉斯Crockford的的JavaScript:好的部分

+0

雖然你寫的都不是錯的,但這並沒有回答這個問題 - 它沒有說明這樣做的好處,也沒有說明它是否更快。 – Shadow

+0

「可以通過在[]後綴中包裝字符串表達式來從對象中檢索值。如果字符串表達式是字符串文本,並且如果它是合法的JavaScript名稱而不是保留字,則可以使用。符號這個符號是首選,因爲它更緊湊,讀起來更好「(Douglas Crockford,* JavaScript:The Good Parts *) – Badacadabra

+0

這是有用的信息添加到您的答案。 – Shadow

3

兩個以下各行的JavaScript功能相同;

SomeonesName.online 
SomeonesName["online"] 

你只真正需要的,如果你正在訪問與無效的名稱要使用的密鑰方括號(如一個包含.-),或者如果您使用的是可變的。

否則,點符號更好讀寫,大多數linters和程序員更喜歡它。

關於您的編輯 - 它們在功能上都是相同的。他們需要花費相同的時間來運行,而使用正確的IDE,他們甚至可以花費相同的時間來編寫。這完全是一個偏好問題。除了風格一致性,沒有任何好處。

1

。 & []這兩個符號在功能上相同,執行速度沒有差異。只有當訪問鍵有一些特殊字符在JavaScript訪問屬性時衝突。

0

我會說使用哪一個你更舒適的。只要一致。我使用了codeacademy,有時你的代碼會正確,但freeCodeCamp我正在尋找一種特定的方式讓你做到這一點,以便轉到下一課。希望這可以幫助