2017-03-29 117 views
2

我已經爲單人或雙人qoutes的字符串字面量的JavaScript(JSON除外)的討論,似乎一個的選擇或其他純粹是任意的,有兩個澄清:現在我們應該使用反引號來引用字符串文字嗎?

  • 使用所有代碼都使用相同的約定(沒有var a="a", b='b')。
  • 您可以靈活地適應文字,否則這些文字會需要轉義很多字符,從而傷害可讀性(不是its='it\'s'也不是normal="the \"normal\" thing")。

但是我們現在另一個qouting角色,那就是在模板文本中使用的反引號,這本身是非常不經常在普通的文本或代碼比其他兩個使用,因此需要較少的轉義:

youre = `You're so "normal"!` 

對於那些會產生不需要的嵌入式表達式的情況,至多需要留出美元符號。

我試圖想到避免使用反碼作爲編碼標準的原因,取而代之的是其他兩種。

  • 是否會損害性能?我想不是真的(我試圖測量,但得到inconclusive results)。如果性能僅取決於要逃脫的字符數量,則可以看到來自邊緣案例(如youre)或帶有換行符的文字的改進。
  • 打字速度較慢?這取決於你的鍵盤。在我的(西班牙語)中,雙引號和單引號都在數字行中,而且難以觸及,而雙引號要求我按Shift鍵,而反引號只是遠離手指的一個鍵,但需要按Space鍵,所以它很難說這將是我的。
  • 瀏覽器兼容性?也許吧。但是時間解決了這個問題,並且在某些情況下它不相關,比如任何打算在Node.js中運行的東西。

是否有其他原因可能會阻止(或鼓勵)將反引號設置爲項目編碼標準中字符串文字的qoute?

+0

上的NodeJS – ZiTAL

+0

@ZiTAL節點的當前版本LTS工作不工作(了好一會兒了) – Kos

+0

''v0.10.29'語法錯誤:意外的令牌ILLEGAL' – ZiTAL

回答

1

使用反斜槓字符串允許創建模板字符串。

const create = word => `Hello ${word}` 

console.log(create("World")); // Hello World 

所以這是創建/內插字符串的更簡潔的方法。由於轉譯器/解釋器會將其重新轉換爲如下形式:"Hello" + word對性能的影響應取決於要組合的字符串數量和字符串的總長度。

無論你選擇哪一種»字符串類型«如果你需要在它的引號字符,則需要對其進行轉義:

console.log(```) // SyntaxError 
console.log(`\``) // ` 

因此,所有的一切,模板字符串是偉大的模板,所以使用他們如果你喜歡它,但它不會有任何區別,當涉及到逃跑,再加上,你也必須逃避$的跡象。

+0

單個'$'不需要轉義,只有在後面加上'{'。 – dmcontador

相關問題