從 html 的角度考慮,確實用單引號會方便很多。但如果是單純的 .js 檔案,我傾向於使用雙引號。
1. 因為 ES6 引入了 template string,template string 用的分隔符 [ ` ] 看起來和單引號[ " ] 太像了,容易搞混。我們在專案中遇到過,有人在使用單引號字串裡誤用了 template string,導致字串未能正確替換,但是修 bug 的人也沒找到這個錯誤,反而以為是執行環境不支援 ES6,結果就把 template string 幹掉改成用 “%s” 來拼接字串…… 如果用雙引號表示字串,這兩個人根本就不會看錯。
2. 此外,雙引號最直接的好處是,插入單引號會很方便(廢話)。我隨便查閱了 SourceTree, WebStrom, Unity3D 三款軟體的英文提示,發現老外都很少在提示資訊裡插入雙引號,而是在應該用雙引號的地方直接寫單引號。因此為了讓你的軟體逼格更高,文字中間就別插入雙引號了!哈哈~~~3. 最後,如果你喜歡寫單元測試的話,雙引號還有一個好處是和 JSON 保持一致。例如:
從 html 的角度考慮,確實用單引號會方便很多。但如果是單純的 .js 檔案,我傾向於使用雙引號。
1. 因為 ES6 引入了 template string,template string 用的分隔符 [ ` ] 看起來和單引號[ " ] 太像了,容易搞混。我們在專案中遇到過,有人在使用單引號字串裡誤用了 template string,導致字串未能正確替換,但是修 bug 的人也沒找到這個錯誤,反而以為是執行環境不支援 ES6,結果就把 template string 幹掉改成用 “%s” 來拼接字串…… 如果用雙引號表示字串,這兩個人根本就不會看錯。
2. 此外,雙引號最直接的好處是,插入單引號會很方便(廢話)。我隨便查閱了 SourceTree, WebStrom, Unity3D 三款軟體的英文提示,發現老外都很少在提示資訊裡插入雙引號,而是在應該用雙引號的地方直接寫單引號。因此為了讓你的軟體逼格更高,文字中間就別插入雙引號了!哈哈~~~3. 最後,如果你喜歡寫單元測試的話,雙引號還有一個好處是和 JSON 保持一致。例如:
這裡的物件 "{ foo: ... }" 其實不是手打的,而是從執行時透過輸出的 JSON 複製過來的,如果用單引號的話,還得再轉換一次才能用……