前言
本文是我學(xué)習(xí)JavaScript過程中收集與整理的一些易錯知識點,將分別從變量作用域,類型比較,this指向,函數(shù)參數(shù),閉包問題及對象拷貝與賦值這6個方面進(jìn)行由淺入深的介紹和講解,其中也涉及了一些ES6的知識點。
JavaScript知識點
1.變量作用域
var a = 1;function test() { var a = 2; console.log(a); // 2} test();
上方的函數(shù)作用域中聲明并賦值了a,且在console之上,所以遵循就近原則輸出a等于2。
var a = 1;function test2() { console.log(a); // undefined var a = 2; } test2();
上方的函數(shù)作用域中雖然聲明并賦值了a,但位于console之下,a變量被提升,輸出時已聲明但尚未被賦值,所以輸出“undefined”。
var a = 1;function test3() { console.log(a); // 1 a = 2; } test3();
上方的函數(shù)作用域中a被重新賦值,未被重新聲明,且位于console之下,所以輸出全局作用域中的a。
let b = 1;function test4() { console.log(b); // b is not defined let b = 2; } test4();
上方函數(shù)作用域中使用了ES6的let重新聲明了變量b,而let不同于var其不存在變量提升的功能,所以輸出報錯“b is not defined”。
網(wǎng)友評論