使用Number()轉換時:javascript
+
,-
,.
)外都會轉爲NaN,十六進制時,字符串包含任何非數字字符都返回NaN使用parseInt()轉換時:java
var num1 = parseInt("10",2); //2 按二進制解析 var num2 = parseInt("10",8); //8 按八進制解析 var num3 = parseInt("10",10); //10 按十進制解析 var num4 = parseInt("10",16); //16 按十六進制解析
使用parseFloat()轉換時:瀏覽器
.
var num = parseFloat("0xA"); //0 var num = parseInt("0xA"); //10
var num = parseFloat("2.125e7"); //31250000
此條適用於整數,咱們能夠用toString()返回任意進制的整數。函數
var num = 10; alert(num.toString()); //"10" alert(num.toString(9)); //"11" alert(num.toString(16)); //"a"
在對NaN和Infinity使用位操做符時,這兩個數值都會被當成0來處理。 若是對於非數值應用位操做符,會先使用Number()函數將該值轉換爲一個數值。編碼
還有一點要注意的就是負數的無符號右移,無符號右移是以0來填充空位,而不像有符號右移以符號位填充空位,因此對正數的無符號右移和有符號右移結果相同,但對負數就不一樣了。無符號右移操做會把負數的二進制碼當成正數的二進制碼,並且負數是以補碼形式表示,所以會致使無符號右移後的結果相差很是大。code
var oldValue = -64; var newValue = oldValue >>> 5
var s1 = "01", s2 = "1.1", s3 = "z", b = false, o = { valueOf: function(){ return -1; } }; s1 = +s1; //1 +改成-: -1 s2 = +s2; //1.1 -1.1 s3 = +s3; //NaN NaN b = +b; //0 0 o = -o; //-1 1
var num1 =Infinity, num2 = 0, num3 = -2 ,num4 = -Infinity; alert(num1 * num2); //NaN alert(num1 * num3); //-Infinity alert(num1 * num4); //-Infinity
Infinity%2=NaN; 2%-Infinity=2; 0%Infinity=0; //只要被除數爲0,除數不爲NaN,結果都爲0 Infinity%0=NaN; //被除數能夠爲任意數,除數只要爲0,結果都爲NaN Infinity%Infinity=NaN
Infinity + -Infinity = NaN; var p = { valueOf: function () { return -1; } }; var num =1; var result = num +p; alert(result); // 0 相加 var p = { valueOf: function () { return "not a num"; } }; var num =1; var result = num +p; alert(result); //1not a num 字符串鏈接
Infinity - Infinity = NaN; -Infinity - -Infinity = NaN;
關係操做符就是小於(<)、大於(>)、小於等於(<=)和大於等於(>=)對象
var result = "a" < 3; //false a轉換爲NaN var result = "a" >= 3; //false 任何數和NaN進行相比都爲false