1.let与const
ES6 新增了let
命令,用来声明变量。它的用法类似于var
,但是所声明的变量,只在let
命令所在的代码块内有效。
for
循环的计数器,就很合适使用let
命令。
ES6 的块级作用域必须有大括号,如果没有大括号,JavaScript 引擎就认为不存在块级作用域。
与var相比,主要区别在于:
a)没有预解析,不存在变量提升
b)在同一个作用域里不能重复定义变量
const
声明一个只读的常量。一旦声明,常量的值就不能改变。
这意味着,const
一旦声明变量,就必须立即初始化,不能留到以后赋值。
但是对于引用类型数据,const声明的变量是可以改变的
const b = { a: '1', b: '2' } b.a = '3' console.log(b) // {a: '3', b: '2'} const arr =['apple','banana']; arr.push('orange'); console.log(arr); // ['apple','banana','orange']
2.变量的解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
// 左右两边结构和格式要保持一致 // 解构不成功为undefined // 解构数组 let [a,b,c] = [1, 2,3] // 解构json let json = { name:‘strive', age: 18, job: 'hah' } let {name, age, job} = json;
用途:
1).交换变量
let x = 1; let y = 2; [x, y] = [y, x];
2).从函数返回多个值
函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便。
// 返回一个数组 function example() { return [1, 2, 3]; } let [a, b, c] = example(); // 返回一个对象 function example() { return { foo: 1, bar: 2 }; } let { foo, bar } = example();
3).提取json数据
let jsonData = { id: 42, status: "OK", data: [867, 5309] }; let { id, status, data: number } = jsonData; console.log(id, status, number); // 42, "OK", [867, 5309]
3.字符串的扩展
比较有用的是这个模板字符串
反撇号 ··
嵌入变量: ${ 变量名 }
let name ='Strive'; let age = 18; let str = `这个人叫${name}, 年龄是 ${age}岁`; console.log(str);