JS中的單引號與雙引號
HTML中的單引號與雙引號很簡單,就是兩個字符實體:
顯示 描述 實體名稱 實體編號
" 雙引號、引號 " "
' 單引號、撇號 ' '
x
1
顯示 描述 實體名稱 實體編號
2
" 雙引號、引號 " "
3
' 單引號、撇號 ' '
JS中的單引號和雙引號其實沒啥區別,看你自己習慣了。
但若雙引號中再使用雙引號,我們可采取
"外雙內單"
或者
"外單內雙"
的格式;如果需要的是雙引號本身,則只能是"外單內雙":
console.log("包'青'天"); //包'青'天
console.log('包"青"天'); //包"青"天
console.log("包"青"天"); //錯誤
x
1
console.log("包'青'天"); //包'青'天
2
console.log('包"青"天'); //包"青"天
3
console.log("包"青"天"); //錯誤
或者像JAVA中那樣,用 反斜杠\ 來禁止解析雙引號:
console.log("包\"青\"天"); //包"青"天
1
console.log("包\"青\"天"); //包"青"天
一個容易混淆的地方
比如在一個網頁中的按鈕,寫onclick事件的處理代碼,不小心寫成如下:
<input type="button" onclick="alert("彈窗")" /> -------------------不正確
1
<input type="button" onclick="alert("彈窗")" /> -------------------不正確
提示出錯后,再漫不經心地改為:
<input type="button" onclick="alert(\"彈窗\")" /> ----------------不正確
1
<input type="button" onclick="alert(\"彈窗\")" /> ----------------不正確
結果還是出錯。這時,我就想不通了,雖然我知道最直接的解決方法是寫成這樣:
<input type="button" onclick="alert('彈窗')" /> -------------------正確
<input type="button" onclick='alert("彈窗")' /> -------------------正確
1
<input type="button" onclick="alert('彈窗')" /> -------------------正確
2
<input type="button" onclick='alert("彈窗")' /> -------------------正確
但為什么JS中的轉義字符 \ 沒有效果了呢?
這是因為,這段代碼還是歸於HTML的管轄范圍,所以轉義字符應該使用HTML的,而不是javascript的:
<input type="button" onclick="alert("雙引號");" /> -------------------正確
<input type="button" onclick="alert("雙引號");" /> -------------------正確,【"】和【"】沒任何區別
<input type="button" onclick="alert('單引號');" /> -------------------正確
1
<input type="button" onclick="alert("雙引號");" /> -------------------正確
2
<input type="button" onclick="alert("雙引號");" /> -------------------正確,【"】和【"】沒任何區別
3
4
<input type="button" onclick="alert('單引號');" /> -------------------正確
小結
注意,以下任何錯誤都不會對HTML解析造成影響,只是會影響JS功能(即不會執行alert方法)
<input value="外雙引號內雙引號-錯誤" type="button" onclick="alert("OK");" />
<input value="外單引號內單引號-錯誤" type="button" onclick='alert('OK');' />
<input value="反斜杠\+雙引號-錯誤" type="button" onclick="alert(\"OK\");" />
<input value="反斜杠\+單引號-錯誤" type="button" onclick='alert(\'OK\');' />
<input value="連續兩個雙引號-錯誤" type="button" onclick='alert(""OK"");' />
<input value="連續兩個單引號-錯誤" type="button" onclick="alert(''OK'');" />
<input value="外雙引號內單引號-OK" type="button" onclick="alert('OK');" />
<input value="外單引號內雙引號-OK" type="button" onclick='alert("OK");' />
<input value="外部不使用任何引號-OK" type="button" onclick=alert('OK'); />
<input value="外部不使用任何引號-OK" type="button" onclick=alert("OK"); />
11
1
<input value="外雙引號內雙引號-錯誤" type="button" onclick="alert("OK");" />
2
<input value="外單引號內單引號-錯誤" type="button" onclick='alert('OK');' />
3
<input value="反斜杠\+雙引號-錯誤" type="button" onclick="alert(\"OK\");" />
4
<input value="反斜杠\+單引號-錯誤" type="button" onclick='alert(\'OK\');' />
5
6
<input value="連續兩個雙引號-錯誤" type="button" onclick='alert(""OK"");' />
7
<input value="連續兩個單引號-錯誤" type="button" onclick="alert(''OK'');" />
8
9
<input value="外雙引號內單引號-OK" type="button" onclick="alert('OK');" />
10
<input value="外單引號內雙引號-OK" type="button" onclick='alert("OK");' />
11
<input value="外部不使用任何引號-OK" type="button" onclick=alert('OK'); />
12
<input value="外部不使用任何引號-OK" type="button" onclick=alert("OK"); />
2018-4-15