ES6常见知识点总结(未完)

1.var 变量提升

使用var声明的变量,声明会被提升到作用域的顶部

举几个例子:

eg1:

console.log(a) // undefined
var a = 1

可以看做这样

var a
console.log(a)
a=1

eg2:

var a = 10
var a
console.log(a) // 10

可以看作

var a;
var a;
a=10;
console.log(a)

eg3,函数声明也会提升,函数提升会把整个函数挪到作用域顶部:

console.log(a) // ƒ a() {}
var a = 1
function a() {}

看作:

var a;
function a() {}
console.log(a) // ƒ a() {}
a = 1

2.var,let,const对比

1.在全局作用域下,var声明的变量,会挂载到window上,其他二者不会

2.三者都存在提升,但是let,const的提升和var不同:虽然变量在编译的环节中就被告知在这块作用域中可以访问,但是访问是受限制的(形成暂时性死区):

所以let const必须先声明后使用

var a = 1;
function test1(){
    console.log(a);
}

function test2(){
    console.log(a);
    let a; // 执行到上一步时就已经知道该作用域内有a,所以不会再往外层作用域找,但是形成了暂时性死区,这里的a无法访问
}

test1() // 1
test2() // error, a is undefined

3.let 和 const 作用基本一致,但是后者声明的变量不能再次赋值

3.模块化

 3.1为什么要模块化?

 3.2实现模块化的方法有哪些?各有什么特点?

猜你喜欢

转载自www.cnblogs.com/dll-ft/p/10178115.html