這篇博客用來記錄下經過各類途徑知道的一些JS的小細節。es6
由於:undefined強轉數字是NaN 而 null強轉數字是+0,規則以下瀏覽器
console.log({}=={});//false 指針的比較,兩個都是新對象,指向的位置不同,因此爲false函數
console.log({}<{});//false 大小的比較,會將左右進行ToPrimitive操做,{}執行該操做以後獲得的是一個表示該對象的字符串」[object Object]」,因此應該是相等this
console.log({}<={});//true 同上es5
由於基礎類型是不可變的,你所更改的基礎類型的值,不過是將更改後的值放入到新的地址中,而後變量將指針指向新的地址。一旦更改了當前屬性的指針所指向的地址,JS就會把這個屬性從原型鏈中複製到此實例中。指針
一、第一個參數能夠是字符串,由於引擎內部是使用eval語句執行的對象
二、時長最長爲 2147483647毫秒(24.8天),由於瀏覽器內部使用32位帶符號的整數來儲存推遲執行的時間。blog
PS:一樣的,arguments、super、new.target這三個變量也是引用的外層的原型鏈
好比在瀏覽器環境下字符串
let a = 1,b = {a:2};
let f = ()=>{console.log(this.a)};
執行f.call(b);返回的仍是1
一下是另外一個實例,將es6轉換成es5以後的結果,這下你應該就明白爲何call沒有用了。
多是因爲從其餘語言帶來的感受,因此不少人都覺得使用let b = new Object(a) ,則a爲b的原型,其實不是,其實這個語句等於 let b = a;
有些人聲明變量的時候忘記寫關鍵字了。這會致使什麼後果呢?
一、不會變量提高。
二、可使用delete刪除