1 概念:
程序在運(yùn)行過程中會產(chǎn)生各種各樣的臨時數(shù)據(jù),為了方便數(shù)據(jù)的運(yùn)算和操作,JavaScript對這些數(shù)據(jù)進(jìn)行了分類,提供了豐富的數(shù)據(jù)類型
1.1 數(shù)據(jù)類型的劃分:
簡單的數(shù)據(jù)類型:
Number //整數(shù)和小數(shù)
String //字符串,引號擴(kuò)起
Boolean //真假
Undefined //未賦值
Null //空的對象
引用(復(fù)雜)的數(shù)據(jù)類型:
Object
1.2 數(shù)據(jù)類型查看:
typeof操作符
會將檢查結(jié)果以字符串的形式返回給我們
示例:
console.log(typeof 100); //number
var name='MRX';
console.log(typeof name); //string
2 簡單數(shù)據(jù)類型:
2.1 Number
在JS中所有的數(shù)值都是Number類型(整數(shù)和小數(shù))
var num1=123;
var num2=3.14;
console.log(typeof num1);
console.log(typeof num2);
由于內(nèi)存限制,ECMAScript并不能保存世界上所有的數(shù)值
// 最大值:Number.MAX_VALUE
console.log(Number.MAX_VALUE); //1.7976931348623157e+308
// 最小值:Number.MIN_VALUE
console.log(Number.MIN_VALUE); //5e-324
// 無窮大:Infinity,如果超過了最大值就會返回該值
console.log(Number.MAX_VALUE + Number.MAX_VALUE); //Infinity
// 無窮小:-Infinity,如果超過了最大值就會返回該值
console.log(Number.MIN_VALUE - Number.MIN_VALUE); //0
console.log(typeof Infinity); //number
console.log(typeof -Infinity); //number
NaN非法數(shù)字(Not A Number)
JS中當(dāng)對數(shù)值進(jìn)行計算時沒有結(jié)果返回,則返回NaN
var num=NaN;
console.log(num);
console.log(typeof num); //返回number
使用注意:
JS中整數(shù)的運(yùn)算可以保證精準(zhǔn)的結(jié)果
var counter=120+20;
console.log(counter); //返回140
在JS中浮點(diǎn)運(yùn)算可能得到一個不精確的結(jié)果
var counter=100.1+20.1;
console.log(counter); //返回120.19999999999999
2.2 String
字符串由單引號或雙引號擴(kuò)起
正常的情況:
var str1="baga"
var str2='YES'
var str3=`MRX` //ES6新增,反括號
console.log(typeof str1);
console.log(typeof str2);
console.log(typeof str3);
注意事項(xiàng):
不能一單一雙,必須成對出現(xiàn)
//錯誤的
// var str4="hello word';
相同引號不能嵌套,不同引號可以嵌套
var str4="hello 'World'";
給變量加上引號,那么變量將成為字面量
var sex='男'
console.log(sex); //輸出:男
console.log('sex'); //輸出:sex
2.3 Boolean
概念:布爾型也被稱為邏輯值類型或者真假值類型,只能夠取真(true)和(false)兩種數(shù)值,
var boo1=true;
var boo2=false;
console.log(typeof boo1);
console.log(typeof boo2);
雖然Boolean類型的字面值只有兩個,但ECMAScript中所有類型的值都與這兩個Boolean值等價的值
任何非零數(shù)值都是true,包括正負(fù)無窮大,只有0和NaN是false
任何非空字符串都是true,只有空字符串是false
任何對象都是true,只有null和undefined是false
var boo1=Boolean(0);
console.log(boo1); //false
var boo2=Boolean(1);
console.log(boo2); //true
var boo3=Boolean(-1);
console.log(boo3); //true
var boo4=Boolean("hello"); //非空字符串
console.log(boo4); //true
var boo5=Boolean(""); //空字符串
console.log(boo5); //false
var boo6=Boolean(undefined);
console.log(boo6); //false
var boo7=Boolean(null);
console.log(boo7); //false
2.4 Null和Undefined
Undefined是一種比較特殊的類型,表示變量未賦值,這種類型只有一種值就是undefined
var str;
console.log(str); //輸出:Undefined
undefined是Undefined類型的字面量
undefined和168"MRX"'itlike'一樣是一個字面量
Undefined和Number/String一樣是一個數(shù)據(jù)類型
typeof對沒有初始化和沒有聲明的變量都會返回undefined
var str1=undefined;
console.log(typeof str1); //undefined
var str2;
console.log(str2); //undefined
Null類型也是只有一個值的數(shù)據(jù)類型,這個特殊的值是null
從語義上看null表示的是一個空的對象,所以使用typeof檢查null會返回一個Object
var str3=null;
console.log(str3); //返回Object
undefined值實(shí)際上是由null值衍生出來的,所以如果比較undefined和null是否相等,會返回true
var str4=null;
var str5=undefined;
console.log(str4==str5); //值比較,true
console.log(str4===str5); //類型比較,false