[英]Understanding implicit conversion in Javascript
我在傳遞一個參數時遇到了一個麻煩的JavaScript錯誤,但是當它被收到時,它就完全不同了。 我修復了它,但想知道發生了什么事以供將來參考。
我應該作為參數傳遞的是'0616'(帶引號)。 我實際通過的是0616(沒有引號)。
因此,當它被收到時,發生了某種隱式數字轉換,它被收到為398.我理解隱式和顯式轉換,但是發生了什么事情將0616轉變為398.領先的零似乎與某些事情有關因為我通過的其他值在最重要的數字中非零是幸存的。 只有從零開始的那些?
但398和'0616'之間有什么關系?
有任何想法嗎?
啊,javascript的神奇世界!!
任何以0開頭的數字文字都被視為八進制數。
一個hacky解決方法是
parseInt('0616', 10)
0616
是舊的八進制數字格式。 在新規范中,它應該是0o616
,但是舊格式仍然受到瀏覽器的支持。
看到這個維基頁面 :
前綴0o被引入....並且它旨在由ECMAScript 6支持 (在ECMAScript 3中不鼓勵前綴0並在ECMAScript 5中刪除)。
原因是前導零是基本八進制的javascript表示法,例如010 = 8.十六進制的表示法是前導0x,例如0x10 = 16
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.