首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript toString() 多態行為詳解:數值進制轉換、數組字符串化與 eval 陷阱

     編輯:程式設計疑難解答

Number.prototype.toString(radix)

(12).toString()   // "12" (默認 10 進制)
(12).toString(2)  // "1100" (二進制)
(12).toString(16) // "c" (十六進制)

Array.prototype.toString()

[1,2,3].toString() // "1,2,3" (等同 join(','))

eval 陷阱

var arr = [1,6,8];
eval('(' + arr.toString() + ')'); // eval('(1,6,8)') → 逗號運算符,返回最後一個值 8
eval('Math.max(' + arr.toString() + ')'); // eval('Math.max(1,6,8)') → 8

逗號運算符:依次計算表達式,返回最後一個值。(a,b,c) 返回 c。

正確獲取數組最大值

Math.max(...arr)          // ES6 展開運算符
Math.max.apply(null, arr) // ES5 兼容
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved