前言
本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点。
JavaScript知识点
1.变量作用域
var a = 1;function test() { var a = 2; console.log(a); // 2}
test();上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2。
var a = 1;function test2() { console.log(a); // undefined
var a = 2;
}
test2();上方的函数作用域中虽然声明并赋值了a,但位于console之下,a变量被提升,输出时已声明但尚未被赋值,所以输出“undefined”。
var a = 1;function test3() { console.log(a); // 1
a = 2;
}
test3();上方的函数作用域中a被重新赋值,未被重新声明,且位于console之下,所以输出全局作用域中的a。
let b = 1;function test4() { console.log(b); // b is not defined
let b = 2;
}
test4();上方函数作用域中使用了ES6的let重新声明了变量b,而let不同于var其不存在变量提升的功能,所以输出报错“b is not defined”。
网友评论

