var
let
const
变量字面量
展开运算符
场景一
场景二
var
在以前我们使用var定义一个变量的时候,实际上就是在window对象上添加一个变量和值,也因为我们在使用window变量的时候不需要带上window的前缀,所以我们在后面的变量引用中直接写上变量名直接可以引用变量值,这种方式会对全局变量造成污染;
var cce=1;
console.log(cce);
// 1
console.log(window.cce);
// 1
let
let和var相似,也是对变量进行声明再使用,那么let生命的变量,只在当前的块作用域{花括号包起来的块级作用域}内有效,注意向内有效,向外无效;
let声明的变量不能重新声明,let声明的变量不再做变量提升,只能先声明,后使用;
{
var a =1;
let b =2;
}
console.log(a) // 1
console.log(b) // 抛出异常
const
const和let差不多但是const声明的是常量,不能重复声明,不可以重复赋值,引用地址不能改变,堆中的数据可以修改;
const在声明的时候是必须要赋值的,否则会报错,同样只在当前块级作用域引用;
{
const n1 = 'const';
}
console.log(n1) // 抛出异常
变量字面量
在es6里面,对我们的kv变量赋值也有了极大的简化,如果键和值一样,那么可以省略,函数也可以省略函数关键字;
// es5
var func=function(name,age){
return {
name:name,
age:age,
action:function(a){
console.log(a)
}
}
}
result=func('cce',18)
console.log(result)
// es6
var func=function(name,age){
return {
name:name,
age:age,
action(a){
console.log(a)
}
}
}
result=func('cce',18)
console.log(result)
展开运算符
展开运算符是可以将多个数组合并成数组,也可以将多个数组合并成数组;
场景一
函数接受多个参数,将多个参数合并成一个数组;
var func=function(...kwargs){
return kwargs
}
console.log(func(1,2,3,4))
场景二
函数接受一个参数,将多个数组以展开运算符的形式将数组展开,作为一个参数传入函数;
var arr1=[1,2,3,4]
var arr2=[5,6,7,8]
var funcGen=function(arr){
return arr
}
console.log(funcGen([...arr1,...arr2]))