电路变量定义 (变量1书籍解读)

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]))