ECMAscript數(shù)據(jù)類型分為;
5種基本數(shù)據(jù)類型(簡(jiǎn)單數(shù)據(jù)類型或原始類型)和1種復(fù)雜數(shù)據(jù)類型。
5種基本數(shù)據(jù)類型分別是:
undefined 未定義類型
null 空類型
Boolean 布爾類型
number 數(shù)值型
string 字符串類型
1種復(fù)雜數(shù)據(jù)類型:object 對(duì)象類型
檢測(cè)變量的數(shù)據(jù)類型(typeof操作符):typeof 變量名 或者 typeof(變量名)
可能返回以下類型(字符串):
"undefined" 如果這個(gè)值未定義;
"boolean" 如果這個(gè)值是布爾值;
"number" 如果這個(gè)值是數(shù)值;
"string" 如果這個(gè)值是字符串;
"object" 如果這個(gè)值是對(duì)象或null;
"function" 如果這個(gè)值是函數(shù);
^ Undefined --未定義類型
Undefined類型只有一個(gè)值,即特殊的 undefined。
1).使用var聲明變量但未賦值(未初始化)時(shí),這個(gè)變量的值就是undefined。檢測(cè)其類型也是undefined。
var a;
console.log(a); //undefined
console.log(typeof a);//undefined

2).變量從未定義過,檢測(cè)其類型為undefined,值報(bào)錯(cuò)。
console.log(a); //報(bào)錯(cuò):a is not defined
console.log(typeof a);//undefined

^ Null--空類型
Null類型是第二個(gè)只有一個(gè)值的類型,這個(gè)特殊值是null。null值表示一個(gè)空對(duì)象指針。
Null是特殊的對(duì)象類型:object。
var a = null;
console.log(a);//null
console.log(typeof a);//object

實(shí)際上,undefined值是派生子null值的,因此ECMA-262規(guī)定他們的相等性測(cè)試要返回true。
console.log(undefined == null);//true

^ Boolean --布爾類型
Boolaen類型是ECMAScript中使用的最多的一種類型。
Boolean類型只有兩個(gè)值:true(真)/flase(假)。
調(diào)用轉(zhuǎn)型函數(shù):Boolean()可以將ECMAScript中所有類型的值都轉(zhuǎn)換城相應(yīng)的布爾值。
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個(gè):fslae本身;" "(空字符串);0;NaN(非數(shù)值);null;undefined。
^ Number--數(shù)值類型
整數(shù) : 100、13、5、33
浮點(diǎn)數(shù)值(有些語言中稱為雙精度數(shù)值) :1.2 3.1415
[圖片上傳中...(微信截圖_20190724204300.png-2c27df-1563975423037-0)]
*NaN:not a Number 不是一個(gè)數(shù)字。特殊的數(shù)值類型。
表示一個(gè)本來要返回?cái)?shù)值的操作數(shù) 未返回?cái)?shù)值的情況。
NaN特點(diǎn):
1).任何涉及NaN的操作都會(huì)返回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是一個(gè)數(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)換:有三個(gè)函數(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()這兩個(gè)函數(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í)別第一個(gè)小數(shù)點(diǎn)),只解析十進(jìn)制數(shù)。
console.log(parseFloat('123holle'))//123
console.log(parseFloat(3.14))//3.14
console.log(parseFloat('5.21.22'))//5.20

^ String 字符串類型。
字符串可以由 雙引號(hào)或單引號(hào)表示。
var a = "hello world";
var a = 'hello world';
查看字符串的長(zhǎng)度:length屬性
var a = 'hello world';
console.log(a.length);//11

查看字符串相應(yīng)位置的字符。
var a = 'hello world';
console.log(a[1]);//e

注意 :在字符串中的每個(gè)元素占據(jù)了字符串的位置。第一個(gè)元素的索引為0,下一個(gè)是索引1,依此類推。字符串的長(zhǎng)度是它的元素的數(shù)量。
轉(zhuǎn)換字符串的兩種方法:
.toString()
數(shù)組、布爾值、對(duì)象和字符串值都有toString()方法。
但nul和undefined沒有。
var a = [1,2,3,4];
console.log(a.toString());
2).String(變量)
強(qiáng)轉(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'

"+"也可以把某個(gè)值轉(zhuǎn)換為字符串,也可以拼接多個(gè)字符串。
var a = 11 + ' ';//'11'
var b = 'hello' + 'world';//'hello world'
^ Object --類型:ECMAScript中的對(duì)象其實(shí)就是一組數(shù)據(jù)和功能的集合。
var a = {};//對(duì)象字面量方法創(chuàng)建
var a = new Object();//構(gòu)造函數(shù)方法創(chuàng)建