3.4--數據類型 數據類型分為 boolean , string, object , function , number,undefinde 3.4.1--typeof 操作符 typeof 操作符在safari5,chrome7以及之前版本 會將正則表達式 返回為"function",而在其他瀏 ...
3.4--數據類型
數據類型分為 boolean , string, object , function , number,undefinde
3.4.1--typeof 操作符
typeof 操作符在safari5,chrome7以及之前版本 會將正則表達式 返回為"function",而在其他瀏覽器會返回"object"
console.log(typeof null); var message = "some string"; console.log(typeof message); console.log(typeof 95);
3.4.2--undefined類型
var message_2; console.log(message_2); console.log(message_2 == undefined); //true var message = undefined; console.log(message); //true
3.4.3--null類型
從邏輯角度講,null是一個空對象指針,而這正是null類型為"object"的原因了
var car = null; console.log(typeof car); //object
實際上undefined值是派生於null值的,所以在ECMA-262相等測試返回true
console.log(null == undefined); //true
3.4.4--boolean值
var message_4 = "hellow world"; console.log(Boolean(message_4)); //true
任何非空字元串的boolean值為true , ""(字元串)為false
任何非零數字值的boolean值為true , 0和NaN(not a number)為false
任何oject對象的boolean值為true , null為false
任何n/a的undefined的boolean值為true , undefined 為false
3.4.5--Number類型
number 支持 八進位 和 十六進位的表示,所有八進位和十六進位表示的數值最終會轉成十進位的數值表示
var intnum = 55; // 整數55 var octalnum = 070; //解析結果八進位的56 var octalnum_1 = 079; // 無效的八進位--解析為79 var hexNum = 0xA; //解析為十六進位的10 var hexNum_1 = 0x1f; //解析為十六進位的31
1.浮點數值
基於IEEE754格式來計算
var floatNum = 1.1; var floatNum_1 = .1 //有效,但不推薦 var floatNum1 = 10.0 //由於保存浮點數的記憶體是整數的兩倍,所以ECMA會儘量把浮點數轉換成整數 var floatNum_2 = 3.125e3; //表示3.125 * 10的3次方 var floatNum_3 = 3e-5; // 表示3*10的-5次方 var floatNum_4 = 0.1 + 0.2; //結果為0.30000000000000004 浮點數計算準度不如整數
2.數值範圍
Number.MIN_VALUE 表示最小值5e-324
Number.MAX_VALUE 表示最大值1.7976931348623157e+308
超過以上兩個數值會轉換成 Infinity 和 –Infinity
3.NaN--not a number
isNaN(10); //false isNaN("blue") // true isNaN(NaN) //true isNaN(true) // false 可以轉換成1
4.數值轉換
var num1 = parseInt("123blue"); // 結果為123 var num2 = parseInt(""); // NaN var num3 = parseInt(0x1f); //31 var num4 = parseInt("AF", 16) // 表示AF的十六進位,第二個參數為幾進位 var num5 = parseInt("AF") // NaN var num6 = parseInt("10", 2) //2(10的二進位解析) var num7 = parseInt("10", 8) // 8 (10的八進位解析) var num8 = parseFloat("0908.5") // 908.5會忽略前面的零 console.log(num8)
3.4.6—String
用string()方法可以把一個值轉換為字元串
var value =11; console.log(String(value)) //"11"
3.5操作符
有遞增操作符++ ,遞減操作符--
var age = 29; age++//30 var age_2 = --age; //遞減操作符要放在前面 console.log(age_2)
3.5.3--boolean操作符
!為邏輯非操作符(取相反值)
&&為邏輯與操作符(並且的意思),兩個為true才可以為true,有一個false都不行
||為邏輯或操作符(或者的意思),有一個為true就可以。
3.5.5--加法操作符
字元串加數字,ECMAscript會將數字轉換成字元串進行並接
如果想將計算結果加入字元串,就把數值執行加(),先執行求值再並接。
var result = (5) + "5"; var num1 = 10; var num2 = 20; var num3 = "The result is " + (num1 + num2) console.log()
3.5.6--關係操作符
// 如果比較兩個值為數值的話,就按照正常大小比較 var result = 1 > 2; //false // 如果兩個值為字元串的話,就按照字元串編碼值比較 var result_2 = "Brick" < "alphate"; // true var result_3 = "23" > "3"; false // 如果一個值為數值,一個值為字元串,則轉字元串為數值作為比較,如果轉不了數值就轉為NaN var result_4 = 23 > "3"; //true var result_5 = 23 > "a"; //false //如果數值和Boolean值進行比較就降Boolean值轉為數值進行比較 var result_6 = 23 > false; //true //如果數值和Object進行比較,就把Object用ValueOf()方法或者用toString()方法轉換進行比較 var result_7 = 23 > null; //true //相等== 和 全等=== ,相等是把兩個操作數轉換再比較,全等是兩個操作數不轉換來比較 //任何操作數和NaN比較都返回false var result_8 = ("23" == 23); //true var result_12 = (55 === "55"); //false var result_9 = (null == undefined); //true var result_10 = (null === undefined); //false var result_11 = (NaN == NaN); // false var result_13 = (NaN == 1); //false
3.5.10--都好操作符
可以一次聲明多個變數。 用於賦值時,逗號操作符會返回最後一項
var num1 = 1 , num2 =2 ,num3 =3; var num=(1,2,3,4,5); // 5