js數值型遇0開始自動轉換為8進制
阿新 • • 發佈:2018-02-08
沒有 log 今天 ret gpo rip 16進制 deb bug
如題,今天在項目更新時發現了js的這個自動轉換問題,代碼如下:
var num = 0110;
render:function(num){
var html="<a href=\"javascript:viewAccountInfo(‘<%=path%>‘,"+num+")\">"+num+"</a>";
return html;
}
在上面做了個超鏈接,把指定的數綁定到了 viewAccountInfo 方法上,之前運行一直沒有問題,直到
今天上午出現了以0打頭的數值,原本應傳 0110 去後臺,但是後臺卻一直報錯提示找不到指定的索引,
前臺alert一下發現彈出的竟然是156,,然後開始對比數據庫,debug,跑流程,確定了後臺數據沒有問題。
心如死灰之下把 0110 改為 1110 後問題竟然好了,立馬以此為突破口百度一下,果然,js在數值傳遞過程
中會對0打頭或0X打頭做自動轉換出理,以0打頭會被轉換成8進制(即156),以0X打頭會被出理成16進制。
知道問題後就好辦了,直接改為字符串形式如下:
var html="<a href=\"javascript:viewAccountInfo(‘<%=path%>‘,‘"+num+"‘)\">"+num+"</a>";
有看出變化在哪裏嗎O(∩_∩)O哈!,只是在num的雙引號外加了一套單引號 ‘ ‘。就是這麽簡單。
js數值型遇0開始自動轉換為8進制