JavaScript中的"奇奇怪怪"

时间:2022-06-29 23:29:14
filter等方法的隐式转化
var list = [1,,2,,0,5,9];
console.log(list[1]); // console: undefined
console.log(list[1] !== null); // console.log: undefined

list = list.filter(item => item !== null);
// console: [1, 2, 0, 5, 9]
通过prototype骗过引擎
var proto = {};
var obj = Object.create(proto);

function fn() {};
fn.prototype = proto;

console.log(obj instance fn);
// console: true
浮点数计算问题
0.1 + 0.2 === 0.3     // false
0.1 + 0.05 === 0.15;  // false
0.1 + 0.1 === 0.2;    // true
0.1 + 0.3 === 0.4;    // true
0.2 + 0.2 === 0.4;    // true
0.05 + 0.25 === 0.3;  // true
0.15 + 0.15 === 0.3;  // true
任何操作数与NaN进行关系比较, 结果都为false
"a" <  3// false
"a" >= 3// false
操作未声明变量
var message; // 变量声明之后取得了默认值
// var age;

console.log(message); // console: undefined
console.log(age);
// Uncaught ReferenceError: age is not defined

// 不报错
console.log(typeof message); // console: undefined
console.log(typeof age);     // console: undefined

console.log(window.message); // console: undefined
console.log(window.age);     // console: undefined  
console.log打印
var arr = [12];
console.log(arr); // console 显示[1, 2], 展开后实际没有内容, 长度为0

for(var i=0len = arr.length; i < len; i++) {
    arr.shift();
}