ECMAscript數(shù)據(jù)類型分為酪术;
5種基本數(shù)據(jù)類型(簡單數(shù)據(jù)類型或原始類型)和1種復雜數(shù)據(jù)類型遥巴。
5種基本數(shù)據(jù)類型分別是:
undefined 未定義類型
null 空類型
Boolean 布爾類型
number 數(shù)值型
string 字符串類型
1種復雜數(shù)據(jù)類型:object 對象類型
檢測變量的數(shù)據(jù)類型(typeof操作符):typeof 變量名 或者 typeof(變量名)
可能返回以下類型(字符串):
"undefined" 如果這個值未定義蘑辑;
"boolean" 如果這個值是布爾值刊苍;
"number" 如果這個值是數(shù)值梯影;
"string" 如果這個值是字符串兢哭;
"object" 如果這個值是對象或null;
"function" 如果這個值是函數(shù)返帕;
^ Undefined --未定義類型
Undefined類型只有一個值桐玻,即特殊的 undefined。
1).使用var聲明變量但未賦值(未初始化)時荆萤,這個變量的值就是undefined镊靴。檢測其類型也是undefined。
var a;
console.log(a); //undefined
console.log(typeof a);//undefined
2).變量從未定義過链韭,檢測其類型為undefined偏竟,值報錯。
console.log(a); //報錯:a is not defined
console.log(typeof a);//undefined
^ Null--空類型
Null類型是第二個只有一個值的類型敞峭,這個特殊值是null踊谋。null值表示一個空對象指針。
Null是特殊的對象類型:object旋讹。
var a = null;
console.log(a);//null
console.log(typeof a);//object
實際上殖蚕,undefined值是派生子null值的,因此ECMA-262規(guī)定他們的相等性測試要返回true沉迹。
console.log(undefined == null);//true
^ Boolean --布爾類型
Boolaen類型是ECMAScript中使用的最多的一種類型睦疫。
Boolean類型只有兩個值:true(真)/flase(假)。
調(diào)用轉(zhuǎn)型函數(shù):Boolean()可以將ECMAScript中所有類型的值都轉(zhuǎn)換城相應的布爾值鞭呕。
var a = 'hello world';
console.log(Boolean(a));//true
1).除0和NaN之外的所有數(shù)字蛤育,轉(zhuǎn)換為布爾型都是true。
2).除" "之外的所有字符,轉(zhuǎn)換為布爾型都為true缨伊。
3).null和undefined轉(zhuǎn)換為布爾型為false。
總結(jié):轉(zhuǎn)換為false的值只有6個:fslae本身进宝;" "(空字符串)刻坊;0;NaN(非數(shù)值)党晋;null谭胚;undefined。
^ Number--數(shù)值類型
整數(shù) : 100未玻、13灾而、5、33
浮點數(shù)值(有些語言中稱為雙精度數(shù)值) :1.2 3.1415
[圖片上傳中...(微信截圖_20190724204300.png-2c27df-1563975423037-0)]
*NaN:not a Number 不是一個數(shù)字扳剿。特殊的數(shù)值類型旁趟。
表示一個本來要返回數(shù)值的操作數(shù) 未返回數(shù)值的情況。
NaN特點:
1).任何涉及NaN的操作都會返回NaN庇绽。
2).NaN與任何值都不相等锡搜,包括NaN本身。
console.log(NaN == NaN);//falsa
isNaN(參數(shù)):判斷參數(shù)是否 “不是數(shù)值”瞧掺。如果是耕餐,數(shù)值返回false,不是數(shù)值返回true辟狈。
console.log(isNaN(NaN));//true
console.log(isNaN(10));//false (10是一個數(shù)值)
console.log(isNaN('10'));//false (可以轉(zhuǎn)換為數(shù)值10)
console.log(isNaN('hello'));//true (不能轉(zhuǎn)換為數(shù)值)
console.log(isNaN(true));//false (可以被轉(zhuǎn)換為數(shù)值1)
*數(shù)值轉(zhuǎn)換:有三個函數(shù)可以把非函數(shù)轉(zhuǎn)換為數(shù)值:
1).Number()
2).parseInt()
3)parseFloat()
**Number():轉(zhuǎn)型函數(shù)Number()可以用于任何數(shù)據(jù)類型肠缔。
Number(變量/變量名)
console.log(Number(true))//1
console.log(Number(false))//0
console.log(Number(null))//0
console.log(Number(' '))//0
console.log(Number('123'))//123
console.log(Number(3.14))//3.14
console.log(Number(undefined))//NaN
console.log(Number('11zbf'))//NaN
**parseInt()和parseFloat()這兩個函數(shù)專門用于吧字符串轉(zhuǎn)換成數(shù)值。
parseInt():從第一位起取到整數(shù)部分哼转;
console.log(parseInt('123holle'))//123
console.log(parseInt(' '))//NaN (區(qū)別:Number(' ') //0)
console.log(parseInt(3.14))//3
console.log(parseInt(' 11zbf'))//11
parseFloat():從第一位起取到小數(shù)部分(只識別第一個小數(shù)點)明未,只解析十進制數(shù)。
console.log(parseFloat('123holle'))//123
console.log(parseFloat(3.14))//3.14
console.log(parseFloat('5.21.22'))//5.20
^ String 字符串類型壹蔓。
字符串可以由 雙引號或單引號表示亚隅。
var a = "hello world";
var a = 'hello world';
查看字符串的長度:length屬性
var a = 'hello world';
console.log(a.length);//11
查看字符串相應位置的字符。
var a = 'hello world';
console.log(a[1]);//e
注意 :在字符串中的每個元素占據(jù)了字符串的位置庶溶。第一個元素的索引為0煮纵,下一個是索引1,依此類推偏螺。字符串的長度是它的元素的數(shù)量行疏。
轉(zhuǎn)換字符串的兩種方法:
.toString()
數(shù)組、布爾值套像、對象和字符串值都有toString()方法酿联。
但nul和undefined沒有。
var a = [1,2,3,4];
console.log(a.toString());
2).String(變量)
強轉(zhuǎn)函數(shù),可以轉(zhuǎn)化任何類型的值贞让。
console.log(String(123));//'123'
console.log(String(3>4));//'false'
console.log(String(3<4));//'true'
console.log(String(null));//'null'
console.log(String(num1));//'undefined'
"+"也可以把某個值轉(zhuǎn)換為字符串周崭,也可以拼接多個字符串。
var a = 11 + ' ';//'11'
var b = 'hello' + 'world';//'hello world'
^ Object --類型:ECMAScript中的對象其實就是一組數(shù)據(jù)和功能的集合喳张。
var a = {};//對象字面量方法創(chuàng)建
var a = new Object();//構(gòu)造函數(shù)方法創(chuàng)建