性能優化
作為最佳實踐,我們會關閉body標簽前引入JavaScript代碼.這樣瀏覽器就會在加載腳本之前決議和顯示HTML,有利于提升頁面的性能
列印的技巧
let obj = { a: 1, b: 2 };
alert("我是一個彈窗"); // 0
console.log(obj); // 1
console.log("obj: " + obj); // 2
console.log("obj: ", obj); // 3
console.dir(obj); // 4
console.error("我是一個錯誤資訊");// 5
console.assert(false); // 6
注意:
0: 彈窗展示內容
1: 這里列印是正常的,物件也可以展開
2: 無法以可視化的形式輸出,因為這樣列印,物件當做字串"[object object]"展示,這個和alert是一樣的
3: 注意,這里用的是',',物件以可視化的形式輸出,這種效果是比較好的一種
4: 這個是專門列印物件的一種方式,比如說dom元素,log列印可能是標簽,并沒有其他屬性,但是這個能列印出物件,并可以展開查看屬性情況
5: 這個列印出來的就是一個錯誤陳述句
6: 斷言列印,當列印內容為true的時候就不會列印,如果為false,就會報錯,但是不能終止程式運行
JavaScript的資料型別 (P11)
原始型別:null , undefined , 字串 , 數 , 布林值 , Symbol
Symbol是ES6中引入的資料型別,代表著獨一無二的值
派生資料型別/物件: JavaScript物件(函式, 陣列, 正則運算式)
delete:物件屬性的洗掉操作 (P11)
var myObj = {
a: 1,
b: 2
}
console.log(myObj);
delete myObj.a;
console.log(myObj)
相等運算子(== 和 ===)
使用==的時候,不同型別的值也可以被看作相等
(1).具體情況表
| 型別(x) | 型別(y) | 結果 | 說明 |
|---|---|---|---|
| null | undefined | true | 無 |
| undefined | null | true | 無 |
| 數 | 字串 | x == toNumber(y) | 將字串轉數再比較 |
| 字串 | 數 | toNumber(x) == y | 將字串轉數再比較 |
| 布林值 | 任意型別 | toNumber(x) == y | 將布林值轉數再比較 |
| 任意型別 | 布林值 | x == toNumber(y) | 將布林值轉數再比較 |
| 字串或數 | 物件 | x == toPrimitive(y) | 將物件轉原始值再比較 |
| 物件 | 字串或數 | toPrimitive(x) == y | 將物件轉原始值再比較 |
如果
x和y的型別相同,JavaScript會用equals方法比較這兩個值或物件
toNumber 和 toPrimitive方法是內部的
(2)toNumber對不同型別的回傳值結果
| 型別 | 結果 |
|---|---|
| undefined | NaN |
| null | null |
| 數 | 對應的數值 |
| 布林值 | true: 1,false: 0 |
(3)toPrimitive 對不同型別的回傳值結果
| 型別 | 結果 |
|---|---|
| 物件 | 如果物件的valueOf方法的結果是原始值,回傳原始值,如果物件的toString方法回傳的是原始值,就反悔這個值.其他的情況回傳同一個錯誤 |
(4)思考:為什么if("a")是true,但是if("a" == true)卻是false
解: 這里
if("a"),字串"a"被隱式轉化為了Boolean值(Blooean("a")),但是在與true比較時候,"a"被轉為了數字(NaN),而true這個布林值,轉為了1,所以最后比較結果為"NaN == 1",所以為false
使用===的時候,同型別的并且值想等才能相等
這個比較一般都沒有什么問題,但是還是有部分注意下
- NaN === NaN => false
- {a: 0, b:1} === {a: 0, b: 1} => false
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/217536.html
標籤:其他
上一篇:第八章 散串列
下一篇:第三章 陣列
