1. 程式人生 > >JavaScript中的"奇奇怪怪"

JavaScript中的"奇奇怪怪"

uri number === afa padding lse overflow ack out

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 = [1, 2];
console.log(arr); // console 顯示[1, 2], 展開後實際沒有內容, 長度為0

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

JavaScript中的"奇奇怪怪"