2021.06.22(JS資料型別詳解)
Undefined型別
該型別只有一個值就是undefined
在定義一個變數的時候沒有賦初值,預設就是undefined
var box = undefined; //該操作沒有任何意義
Boolean型別(類class)
這個型別有兩個值 true false
邏輯運算:等於(==)、全等(===)、不等於(!=)、取反(!)
在JS中,==表示比較(只相等就可以,可以是轉換之後的值),=表示賦值,===表示全等判斷(表明了值以及型別都必須相等)
Boolean() 用來進行資料型別的轉換,將其他資料型別轉換為Boolean型別
NaN、""、null、undefined是可以直接轉換為false的(自身可以轉換)
Number型別
該數值中必須包含一個小數點,並且小數點後面必須至少有一位非零數字
var box = 7.8; var box = .8; //不推薦大家使用,可讀性不強 var box = 3.0; //對於這樣的數,js底層會進行判斷,會自動轉換為整型 //(原因:因為浮點型儲存空間是整型的兩倍,節省記憶體空間)
JS在做運算時不嚴謹
console.log((0.1 * 10 + 0.2 * 10) / 10); //0.3 console.log(0.1 + 0.2 == 0.3); //false 0.1 + 0.2 = 0.30000000000000004
toFixed(n) 保留n位有效數字,返回一個字串
將數值呼叫toString()轉換為字串(能夠進行四捨五入)
NaN:表示一個本來要返回數字型別的值,但是沒有正確的返回數字型別
12/0(java中會報錯)
0/0 isNaN() 是在window中存在的一個方法,會有資料型別的轉換
Number轉型函式有三個:Number()、parseInt()、parseFloat()
Number(); 用於任何資料型別轉換成數值
parseInt(); 從左往右尋找能認識的數字,找到一個不認識的就停止,返回之前認識的(如果最開始就不認識則返回NaN),不認識小數點
parseFloat(); 比parseInt多認識一個小數點
轉型為Number有三個方法:
1、Number() 適用於任意資料型別的轉換
2、parseInt()、parseFloat() 適用於字串的轉換
Number(n) 將n強制的轉換為數值型
var box = "25x"; console.log(Number(box)); //NaN
true → 1 false → 0
var box = null; //先將null轉換為false,然後變為0 var box = undefined; //NaN var box = ""; //0
對於物件轉數值:首先呼叫valueof(),如果沒有然後再呼叫toString();
String型別
建立String型別的兩種方式
1、字面量的形式(推薦大家使用)
2、new運算子的形式
var box = "king"; var box1 = new String("king");
String.prototype 可以用來檢視String型別的原型物件上所有的方法和屬性,任何字串都可以使用String型別的所有方法和屬性
Object型別
js中萬物皆物件
類是物件的具體細分,例項是類的具體表現
建立物件有三種方式
1、字面量的形式
var box = {};
2、new運算子的形式
var box = new Object();
3、Object,create({}) //不常用
var obj = { name:"king" }; var box = Object.create(obj);
物件中可以包含任意的資料型別
key: value 一 一對應的
key:屬性名
value:屬性值
每一個鍵值對之間都是以逗號進行分割的,最後一個不需要任何的標點符號
一個物件中屬性名不能重複
物件兩種獲取值的方式
1、通過 . 運算子 點運算子後面接的都是確定的屬性名
parent.job = “程式猿”
2、通過[ ] 中括號裡面可以是一個字面量,也可以是一個變數名
var wg = "weight"; parent[wg] = "70kg"; parent['weight'] = "70kg";
如果沒有對應的屬性,獲取值會的得到一個undefined
在進行parent.job = "程式猿";操作時,如果原本物件中存在job屬性則是對該屬性的重新賦值,如果沒有該屬性就是新增該屬性
刪除物件上的屬性:
delete parent.wg
物件中存在一個遍歷的迴圈
for (當前迴圈到的屬性名 in 物件名)
實現:
for (var item in parent) { // statement }
2021-06-22 10:47:57