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
未完待续...