JavaScript權(quán)威指南學(xué)習(xí)總結(jié)(1)

1、數(shù)據(jù)類型

JavaScript數(shù)據(jù)類型分為:原始類型(存儲(chǔ)在棧中)和對(duì)象類型(存儲(chǔ)在堆中);
原始類型包括:數(shù)字字符串、布爾值null、undefined;
兩種特殊對(duì)象數(shù)組、函數(shù);
另外,JavaScript的類型還可分為可變類型不可變類型。可變類型的值是可修改的。數(shù)組對(duì)象可修改的。原始類型屬于不可變類型,雖然字符串是由字符組成的數(shù)組,但是在JavaScript中字符串是不可變的;

可以訪問字符串任意位置的文本,但JavaScript并未提供修改已知字符串的文本內(nèi)容的方法。

所以,

記住,在JavaScript中字符串是固定不變的,類似replace()和toUpperCase()等方法都返回新字符串,并不會(huì)修改原本字符串。

2、認(rèn)識(shí)“-0”

下溢:當(dāng)運(yùn)算結(jié)果無限接近于0并比JavaScript能表示的最小值還小的時(shí)候發(fā)生的一種情形。這種情況下,JavaScript返回0.當(dāng)一個(gè)負(fù)數(shù)發(fā)生下溢時(shí),返回-0。
** -0===0 **。

3、JavaScript對(duì)異常情況的處理

  • 被零整除并不報(bào)錯(cuò),只是簡單的返回?zé)o窮大(Infinity)或負(fù)無窮大(-Infinity);
  • 0/0是無意義的,結(jié)果返回NaN;
  • 無窮大除無窮大、給任意負(fù)數(shù)開方或者算術(shù)運(yùn)算符與不是數(shù)字(或無法轉(zhuǎn)換為數(shù)字的操作數(shù))一起使用時(shí)都將返回NaN。

4、關(guān)于NaN

特點(diǎn):和任何值都不相等,包括自身。

所以,無法通過x==NaN來判斷變量x是否是NaN,應(yīng)當(dāng)使用x!=x來判斷,當(dāng)且僅當(dāng)xNaN時(shí)表達(dá)式的結(jié)果才為true。

5、二進(jìn)制浮點(diǎn)數(shù)表示法

可以精確表示分?jǐn)?shù)如1/2、1/8、1/1024等,但不是精確表示1/10、1/100等十進(jìn)制分?jǐn)?shù),所以由于舍入誤差,0.3和0.2之間的近似差值實(shí)際上并不等于0.2和0.1之間的近似差值。

在JavaScript的真實(shí)運(yùn)行環(huán)境中,0.3-0.2=0.09999999999999998;

6、7個(gè)“假值”

任意JavaScript的值都可以轉(zhuǎn)換為布爾值;而轉(zhuǎn)換后為false的值被稱為假值。JavaScript中的七個(gè)假值如下:

undefined
null
0
-0
NaN
""      //空字符串
false

7、null和undefined

nullundefined都可用來描述“空值”;它倆的區(qū)別和聯(lián)系如下:

  • null:可認(rèn)為是一個(gè)特殊的對(duì)象值,含義是“非(無)對(duì)象”,它可以表示數(shù)字、字符串和對(duì)象是“無值”的;對(duì)null執(zhí)行typeof運(yùn)算返回字符串"object"
  • undefined:是變量的一種取值,表明變量沒有初始化;如果要查詢對(duì)象屬性或數(shù)組元素的值時(shí)返回undefined則說明這個(gè)屬性或元素不存在;如果函數(shù)沒有返回任何值,則返回undefined;
  • null是關(guān)鍵字,undefined是預(yù)定義的全局變量,其值就是“未定義”。
  • 兩者都是假值,所以“==”認(rèn)為兩者是相等的,需使用嚴(yán)格相等運(yùn)算符“===”進(jìn)行區(qū)分。
  • undefined是系統(tǒng)級(jí)的、出乎意料的或類似錯(cuò)誤的值的空缺,而null是程序級(jí)的、正常的或在意料之中的值的空缺。所以,**若想將它們賦值給變量或者屬性,或?qū)⑺鼈冏鳛閰?shù)傳入函數(shù),最佳選擇是null。

8、包裝對(duì)象

原始值本沒有方法和屬性,但是我們知道字符串卻有方法和屬性,這是因?yàn)橹灰昧俗址畇的屬性,JavaScript就會(huì)將字符串值通過調(diào)用new String(s)的方式轉(zhuǎn)換成對(duì)象來處理屬性的引用,一旦屬性引用結(jié)束,這個(gè)臨時(shí)創(chuàng)建的對(duì)象就會(huì)被銷毀。所以,存取字符串、數(shù)字或布爾值的屬性時(shí)創(chuàng)建的臨時(shí)對(duì)象稱作包裝對(duì)象。null和undefined沒有包裝對(duì)象。
可通過String()、Number()或Boolean()構(gòu)造函數(shù)來顯示創(chuàng)建包裝對(duì)象:

var s="test",n=1,b=true;
var S=new String(s);
var N=new Number(n);
var B=new Boolean(b);

“==”將原始值和其包裝對(duì)象視為相等,但“===”視為不等。

9、原始值和對(duì)象的比較區(qū)別

  • 原始值的比較是值的比較:只有值相等時(shí)它們才相等。
  • 對(duì)象的比較是引用的比較:當(dāng)且僅當(dāng)它們引用同一個(gè)對(duì)象時(shí)才相等;即使兩個(gè)對(duì)象包含同樣的屬性及相同的值,她們也不是相等;各個(gè)索引元素完全相等的兩個(gè)數(shù)組也不相等。
最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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