你不知道的JavaScript中卷 - 【值】

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
       

未完待续...

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章