ES6基础知识点
一. let 、var、const
1. let /const和 var 的区别
- 不存在变量提升
console.log(c)
var c = 'c'
//var由于预解析,所以这段代码相当于:
var c;
console.log(c)
c = 'c' //输出结果为undefined
/***************************************/
//如果把var换成let
console.log(c)
let c = 'c'
//报错信息为:Uncaught ReferenceError: c is not defined,c未定义
- 同一个作用域下不能重复定义同一个名称
var a = 1;
var a = 100;
console.log(a)//输出100
/***************************************/
let a = 1;
let a = 100;
console.log(a)//Uncaught SyntaxError: Identifier 'a' has already been declared
经常会有这样的题,一不留神就会看错
let a = 1;
a = 100;//这是赋值操作,不是重复定义
console.log(a)//输出100
- 有着严格的作用域
function fun(){
var n = 10;
if(true){
var n = 100;
};
console.log(n)
};
fun() //输出100,var属于函数作用域 > 函数外部拿不到,内部任何地方都能拿到 <
/****************************************************/
function fun(){
letn = 10;
if(true){
let n = 100;
};
console.log(n)
};
fun()//输出10,let属于块级作用域,一个大括号可以看做一个块
2. const注意点
声明一个只读的常量,一旦声明,常量的值就不能改变
const w = 'abc'
w = 'shit' //报错,不能修改
const a;//报错,const 一定要初始化,不能只声明不赋值
//下面这种情况,涉及地址引用
const obj = {};
obj.name = 'xiaoming';
console.log(obj)//输出结果为{name:"xiaoming"}
二. 箭头函数
三. set和map
set类似于数组 成员是唯一的
//基础用法
let s = new Set();
s.add(1).add(2).add(3);
//面试常见题(去重)
var arr = [1,2,2,3,3,4,5,6,7,6,3,2,4,3,2,3,13,12,3]
//1.循环遍历
//2.使用set方法
var arr2 = [...new Set(arr)]
map 类似于对象
//基础用法
let m = new map();
m.set('key','value').set('key','value');
//遍历
for(let [key,value] of m){
console.log([key,value])
}