標籤:而且 之間 返回 動態語言 操作符 其他 字串類型 結果 define
1.JavaScript是一門動態語言,ES6的出現彌補了Js在大型項目上的乏力(有了“類”)。
以下是關於ES5的基礎知識:
2.
JavaScript 與C++或Java 這種傳統的物件導向語言不同,它實際上壓
根兒沒有類。該語言的一切都是基於對象的,其依靠的是一套原型(prototype)系統。而
原型本身實際上也是一種對象。
3.
封裝:封裝概念常由兩部分組成:
(1)相關的資料(用於儲存屬性)
(2)基於這些資料所能做的事(所能調用的方法)
4.
在JavaScript 中,還有一種叫做Infinity 的特殊值。它所代表的是超出了JavaScript 處
理範圍的數值。另外,任何數除以0 結果也為Infinity.
即便將正負Infinity相加,我們也不會得到0,而是會得到一個叫做NaN(Not A Number 的縮寫,即不是數字)
的東西。
5.
NaN:儘管該值得名字叫作‘不是數字’(not a number),但事實上它還是屬於數字類型,只不過是一種特殊的數字。
如果我們在算術運算中使用了不恰當的的運算元,導致運算失敗,該運算就會返回
NaN。
> var a = 10 * "f";
> a;
NaN
而且NaN 是有傳染性的,只要我們的算術運算中存在一個NaN,整個運算就會失敗。
> 1 + 2 + NaN;
NaN
6.當我們將一個數字字串用於算數運算中的運算元時,該字串會在運算中當做數字類型來使用。
7.
兩次!!值還原
藉助雙重取反操作,我們可以很輕易地將任何值轉換為相應的布爾值。理解各種類
型的值轉換為相應布爾值的規則非常重要。除了下面所列出特定值以外(它們將被轉換
為false),其餘大部分值在轉換為布爾值時都為true。
? Null 字元串""。
? null。
? undefined。
? 數字0。
? 數字NaN。
? 布爾值false。
這6 個值有時也會被我們稱為falsy 值,而其他值則被稱為truthy 值(包括字串"0"、
" "、"false"等)。
8.比較子
JS中的==運算子有點不嚴格,分為相等運算子和嚴格相等運算子:
當兩個運算元相等時返回true。在該比較操作執行之前,兩邊的運算元會被自動轉換為相同類型。
===:嚴格相等運算子:
若且唯若兩個運算元的值和類型都相同時返回true。這種比較往往更可靠,因為其幕後不存在任何形式的類型轉換。
!=:不相等運算子。(類型會進行轉換)
!==:嚴格不相等運算子。(類型不轉換)
PS:NaN 不等於任何東西,包括它自己。
9.Undefined,當使用一個不存在的變數時,控制台會報錯。但可以使用typeof修飾符來進行修飾就可以。會返回一個字串“undefined”。
如果我們在聲明一個變數時沒有對其進行賦值,調用該變數時並不會出錯,但typeof操作符依然會返回"undefined"。但null 值就完全是另一回事了。它不能由JavaScript 自動賦值,只能交由我們的代碼來完成。
這是因為null 和undefined 在被轉換為其他基本類型時,方法存在一定的區別。
在與數字進行運算時,undefined會被轉換成NaN。
10.五大基本類型(number,boolean,string,undefined,null)
PS:
(1)任何不屬於基本類型的東西都屬於對象,
(2)數字類型可以儲存的資料包括:正負整數、浮點數、十六進位數與八位元、指數以及特殊數值NaN、Infinity、-Infinity。
(3)字串類型儲存的是一對引號之間的所有字元。
(4)null 類型的值只有一個:null。
(5)undefined 類型的值只有一個:undefined。
(6)絕大部分值在轉換為布爾類型時都為true,但以下6 種falsy 值除外:"";null;undefined; 0; NaN;false。
11.檢查變數存在,最好是用typeof來判定:
var result = "";
> if (typeof somevar !== "undefined"){
result = ‘yes‘;
}
12.對於js中的數組,它可以存放任何類型,可以適用delete來移除某一項,但是移除之後數組長度並不會減少,而是這一項的值為undefined。
增加元素:我們可以通過索引來更新數組中的元素。
刪除元素:為了刪除特定的元素,我們需要用到delete 操作符。然而,相關元素被刪除後,原數組的長度並不會受到影響。從某種意義上來說,該元素被刪除的位置只是被留空了而已。
[JavaScript]ES5基礎知識總結