1、檢測null
// 檢測 a 是不是 null
(!a && typeof a === 'object'); // true
2、函數不僅是對象,還有屬性
let a = function(b, c, d) {};
a.length; // 3
3、typeof 一個未定義的變量,不報錯,返回undefined
var a;
typeof a; // "undefined"
typeod b; // "undefined"
4、數組
4.1 delete運算符可以將單元從數組中刪除,但刪除後,數組的length不會發生變化
4.2 數組通過數字進行索引,也可包含字符串鍵值和屬性(但這些並不計算在數組長度內);字符串鍵值能強制轉換爲十進制數字時,被當作數字索引處理
var s = [];
s["13"] = 1;
s.length; // 14
s["abc"] = 2;
s.length; // 14
4.3 處理類數組
// 方法一
function foo() {
var arr = Array.prototype.slice.call(arguments);
arr.push('bam');
console.log(arr);
}
foo('bar', 'baz'); // ['baz','baz', 'bam']
// 方法二
var arr = Array.from(arguments);
5、數字
5.1 toExponential() 轉換爲指數
var a = 5E10;
a; // 50000000000;
a.toExponential(); // "5e+10"
5.2 toFixed() 可指定小數部分的顯示位數,輸出結果是給定數字的字符串形式
var a = 42.59;
a.toPrecision(3); // "42.590"
5.3 toPrecision() 方法指定有效顯示位數
var a = 42.59;
a.toPrecision(2); // "43"
5.4 “機器精度”:誤差範圍值, 2^-52
// polyfill
if(!Number.EPSILON) {
Number.EPSILON = Math.power(2, -52);
}
function numberToEqual(a1, a2) {
return Math.abs(a1 - a2) < Number.EPSILON;
}
var a = 0.1 + 0.2;
var b = 0.3;
numberToEqual(a, b); // true
5.5 能呈現的最大浮點數大約是 1.798e+308 -> Number.MAX_VALUE
最小浮點數 5e-324 -> Number.MIN_VALUE,它不是負數,但無限接近於0
未完待續...