关键字
let
for(let i=0; i < 5; i++){
setTimeout(function(){
console.log(i)
},1000*i);
}
for(var i=0;i<5;i++){
setTimeout((function(i){
return function(){
console.log(i);
}
})(i),(function(i){
return i*1000
})(i));
}
//暂时性死区 在let声明前赋值,会报错
var tmp = 123;
if (true) {
tmp = 'abc'; // ReferenceError
let tmp;
}
解构赋值
//数组
let [a, b, c] = [1, 2, 3];
[x, y] = [y, x];
//解析json
var jsonData = {
id: 42,
status: "OK",
data: [867, 5309]
};
let { id, status, data } = jsonData;
console.log(id, status, data);
//返回对象
var { foo, bar } = example();
//遍历map
var map = new Map();
map.set('first', 'hello');
map.set('second', 'world');
for (let [key, value] of map) {
console.log(key + " is " + value);
}
//加载模块时,往往需要指定输入那些方法。解构赋值使得输入语句非常清晰。
const { SourceMapConsumer, SourceNode } = require("source-map");
const
一般用来生命声明常亮,一旦初始化就要立即赋值。
声明方式
- var
- function
- let
- const
- class
- import