Javascript中的數(shù)據(jù)類型、值和變量

JS類型

原始類型

數(shù)字 字符串 布爾值 null undefined

對(duì)象類型

Object
(這些都是Object的子類)Function Array Date Math
RegExp Number String Boolean

NaN Infinity

Js中運(yùn)算上溢和下溢(計(jì)算結(jié)果無(wú)限接近于0,但比JS能表示的最小值還小時(shí)發(fā)生的一種情景)都不報(bào)錯(cuò)會(huì)得到無(wú)窮大Infinity和0。負(fù)數(shù)下溢得到-0.
0/0 結(jié)果為NaN 4/0 為Infinity
判斷是不是NaN x!=x 若為true則x為NaN 或者用isNaN(x) Infinity和
-Infinity不是NaN

布爾值

null undefined 0 -0 NaN ''" " "(空字符串和只有空格的字符串) 以上都會(huì)被轉(zhuǎn)換為false。(但是""和" "的長(zhǎng)度是不一樣的)" "==false; //為true " ".length=1
其他所有值,空數(shù)組,空對(duì)象等都會(huì)被轉(zhuǎn)換為true
嚴(yán)格相等運(yùn)算符 === 不進(jìn)行類型轉(zhuǎn)換 必須要類型和值都相等才為true
null == undefined //true
null === undefined //false
!!null 隱式類型轉(zhuǎn)換

包裝對(duì)象

數(shù)字 字符串 布爾值 的包裝對(duì)象分別為Number String Boolean
存取字符串、數(shù)字或布爾值的屬性時(shí)創(chuàng)建的臨時(shí)對(duì)象稱為包裝對(duì)象,臨時(shí)對(duì)象在使用完之后會(huì)馬上銷毀。當(dāng)下次再存取字符串等的屬性時(shí)又會(huì)重新新建一個(gè)臨時(shí)對(duì)象。
包裝對(duì)象可以顯示的創(chuàng)建
var s=new String('xxx');

原始值和對(duì)象引用

原始值是不能改變的,字符串是返回的新的字符串,原字符串是沒(méi)改變的。
對(duì)象的值是可以修改的。
兩個(gè)單獨(dú)的對(duì)象或數(shù)組永不相等
var a=[]; b=[];
a==b ; //false
a===b; //false
a=b;
a===b//true 對(duì)象數(shù)組的比較其實(shí)是引用變量的比較,當(dāng)兩個(gè)引用變量都指向同一個(gè)數(shù)組或?qū)ο髸r(shí)則相等

變量聲明

var x; //聲明一個(gè)變量但是沒(méi)初始化
var a=1;//初始化變量
給未聲明的變量直接賦值,在嚴(yán)格模式下報(bào)錯(cuò),在非嚴(yán)格模式下,會(huì)給全局對(duì)象創(chuàng)建一個(gè)同名的屬性。
b=1;
window.b //1

作用域

全局作用域和函數(shù)作用域 (ES6中有塊級(jí)作用域)
在函數(shù)內(nèi)聲明的變量只在函數(shù)內(nèi)有定義,在局部作用域里局部變量會(huì)覆蓋重名的全局變量。

函數(shù)作用域的聲明提前

在函數(shù)作用域內(nèi)聲明的所有變量在函數(shù)體內(nèi)都是可見(jiàn)的。這意味著變量在聲明之前就已經(jīng)可用了
function f(){
console.log(a); //輸出undefined
var a=1;
}
雖然聲明會(huì)提前,但是變量的賦值還是在原賦值語(yǔ)句處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容