JavaScript基礎對象實用小知識

一、JavaScript的基礎類型

我們在程序中所使用的任何值都是有類型的。JavaScript 僅有以下幾大基本數據類型。

1.數字 — 包括浮點數與整數,例如這些都屬於數字:1、100、3.14。
2.字符串 — 包括由任意數量字符組成的序列,例如:"a"、"one"、"one 2 three"。
3.布爾值 — 包括 true 和 false。
4.undefined — 當我們試圖訪問一個不存在的變量時,就會得到一個特殊值:undefined。除此之外,使用已聲明卻未賦值的變量也會如此。因爲 JavaScript 會自動將變量在初始化之前的值設定爲 undefined。而 undefined 類型的值只有一個 —undefined。
5.null — 這是另一種只包含一個值的特殊數據類型。所謂的 null 值,通常是指
沒有值或空值,不代表任何東西。null 與 undefined 最大的不同在於,被賦予 null 的
變量通常被認爲是已經定義了的,只不過它不代表任何東西。

任何不屬於上述五種基本類型的值都會被認爲是一個對象。

如果我們要查看某一個變量或對象屬性的類型,可以使用typeof。該操作符會返回一個代表數據類型的字符串,以下是其可能返回的結果:

1."number"
2."string"
3."boolean"
4."undefined"
5."object"
6."function"

在 JavaScript 中,還有一種叫做Infinity 的特殊值。它所代表的是超出了 JavaScript 處理範圍的數值。但 Infinity 依然是一個數字。

Infinity 表示的是最大數(或者比最大數還要大的數),那麼最小數該如何表示呢?答案是在 Infinity 之前加一個負號:-Infinity 。

其次,NaN也是一種特殊數字,如果我們在算術運算中使用了不恰當的的操作數,導致運算失敗,該運算就會返回NaN。

二、各類型的轉換的注意點

1.數字字符串和數字相乘,字符串會隱式轉化成number類型,並和數字相乘

> var s="1";
> var result=s*2;//2
> typeof(result)
> "number"

如果該字符串隱式轉換失敗,則該結果會返回NaN

所以,將數字字符串轉換爲數字就有了一種偷懶的方法:只需將該字符串與 1 相乘即可。但是,更好的選擇是調用 parseInt()函數來顯示轉化。

2.數字和字符串相加,數字會被隱式轉化成字符串

> var s="1";
> var result=s+2;//12
> typeof(result)
> "string"

根據這個特性,我們可以使用數字後面加一個空字符串隱式轉化成字符串類型。

3.布爾值轉化

除了下面所列出特定值以外(它們將被轉換爲 false),其餘大部分值在轉換爲布爾值時都爲 true。

空字符串""
null
undefined
數字 0
數字 NaN
布爾值 false

藉助取反操作即(!、||、&&)三種內的!,我們可以很輕易地將任何值轉換爲相應的布爾值。並且,我們可以利用該特性,去判斷一個變量或對象屬性的值,例如我們需要判斷一個變量的值是否爲空或者不爲空字符串,那麼可以如下操作,當a爲如上幾種情況時,則會進入到else裏面。

var a="1";
if(!a){
//true
}else{
//false
}

總結:在不熟悉JavaScript的隱式轉化之前,我們使用各個類型都必須考慮其實際類型。因爲JavaScript是一門弱類型語言,在定義變量時是string,但是後面將number類型的值賦予該變量會改變該變量的類型。因此實際使用的時候需要小心。我們如果想執行拼接操作的話,最好確保其所有的操作數都是字符串。同樣地,在執行數字相加時,我們也要確保其所有的操作數都是數字

三、操作符以及其優先級

1.

2.當使用了||或&&,並且在表達式中只使用了其中的一種,那麼JavaScript會採取惰性求值的方法。即如果在一個連續的邏輯操作中,操作結果在最後一個操作完成之前就已經明確了的話,那麼該操作往往就不必再繼續執行了,因爲這已經不會對最終結果產生任何影響

> true || false || true || false || true;
true
當計算完第一個後,其餘表達式都不會被計算。因爲計算了第一個後,該表達式的結果已經可以確認了

3.如果 JavaScript 引擎在一個邏輯表達式中遇到一個非布爾類型的操作數,那麼該操作數的值就會成爲該表達式所返回的結果

> true || "something";
true

> 1 || "something";
1

> false || 1 || "something";
1

||的話,會返回第一個返回true的表達式的值

> true && "something";
"something"

> true && something && true;
true

> false && something && true;
false

&&的話,會返回最後一個非布爾類型的操作數,沒有則返回布爾類型的值

通常情況下,這種行爲應該儘量避免,因爲它會使我們的代碼變得難以理解。但在某些時候這樣做也是有用的。例如,當我們能確定某個變量是否已經被定義時,就可以像下面這樣,即如果變量 mynumber 已經被定義了,就保留其原有值,否則就將它初始化爲 10。

> var mynumber = mynumber || 10;
> mynumber;
10

這種做法簡單而優雅,但是請注意,這也不是絕對安全的。如果這裏的 mynumber 之前被初始化爲 0(或者是那 6 個 falsy 值中的任何一個),這段代碼就不太可能如我們所願了。

> var mynumber = 0;
> var mynumber = mynumber || 10;
> mynumber;
10

四、undefined 與 null

1.undefined表示該變量尚未被定義,而null表示該變量指向一個不存在或無效的對象或地址,表示無或完全不存在

2.undefined有自己的數據類型,而null,嚴格來說,它表示的是一個不存在的對象

3.在轉換成數字類型時,undefined會被返回NaN,而null則會返回0

4.undefined == null返回的值是true,因爲JavaScript會盡力將兩個值轉換爲相同類型

因此在使用==時要小心,推薦使用===全等號

五、總結

1.JavaScript 語言中有五大基本數據類型:
 數字;
 字符串;
 布爾值;
 undefined;
 null。
2.任何不屬於基本類型的東西都屬於對象。
3.數字類型可以存儲的數據包括:正負整數、浮點數、十六進制數與八進制數、指數以及特殊數值 NaN、Infinity、-Infinity。
4.字符串類型存儲的是一對引號之間的所有字符。
5.布爾類型的值只有兩個:true 和 false。
6.null 類型的值只有一個:null。
7.undefined 類型的值只有一個:undefined。
 絕大部分值在轉換爲布爾類型時都爲 true,但以下 6 種 falsy 值除外:
 "";
 null;
 undefined;
 0;
 NaN;
 false。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章