在程序中經常會寫到字符串的拼接,最常見的一中方式就是把拼接的字符串返回到頁面上,然后讓瀏覽器渲染成html代碼。
現在es6已經用的不少了,但是因為一些原因,有的項目只能用最原始的加號“+”拼接,所以就會出現一種情況;請看下面的代碼:
1 var stringify_json = JSON.stringify(rowObject); 2 var str2 = 1;
1 str +="<input onclick='del_id("+stringify_json+","+str2+")' type='button' value='刪除' />"; 2 function del_id(a,b){ 3 console.log(a); 4 console.log(b); 5 }
上面是代碼的生命,這個時候是沒有問題的,你把str直接返回到頁面,頁面是可以正常的解析的,點擊這個按鈕也是能打印的;下面是打印的結果
打印的結構是沒有任何問題的。但是當我們把str2換成字符串的時候,就發現頁面開始報錯了。
也就是上面的代碼改成str2 = "string"的時候,頁面開始報錯了;下面是錯誤的信息,和頁面的渲染結果;
發現這個並不是按照字符串拼接上去的, 所以js認為這個是方法,所以就出現上上面的錯誤了。
所以我們在拼接的時候,就需要給這個string兩邊加上引號,所以就有了下面的代碼:
1 str +="<input onclick='del_id("+stringify_json+",'"+str2+"')' type='button' value='刪除' />";
然后再頁面上的渲染就是這樣的了。
也就是說,html解析器在解析到string前面的引號的時候,就認為這一段就完成,所以頁面也就直接報錯了,也就是說,咱們需要把拼接上的單引號,變成雙引號;
下面的截圖是我的編輯器的,我直接把上面代碼中的單引號改成雙引號的。
編輯器直接把str2不當成一個變量了。這個肯定是不行的了,所以這個時候就需要用上咱們的轉移字符 "\" 了;
1 str +="<input onclick='del_id("+stringify_json+",\""+str2+"\""+")' type='button' value='刪除' />";
這個是加上轉移字符之后的,也就是說,\后面的引號,不當成是咱們拼接的東西,而是就是簡單的表示自己是個引號。這樣的話,我們就可以正常的打印了。
----------------華麗的分割線-----------------------------
現在已經有很多項目是用es6細的了,es6有更優美的拼接字符串的方式;請參見下面的鏈接
https://www.cnblogs.com/newze/p/7535470.html
這篇文章寫的不錯。大家可以自行查閱;