定义变量
es6 6中声明变量:var function let const import class
let定义局部变量,作用范围只在当前作用域,不可以重复定义
var 定义的变量存在变量提升,编译会把所有var变量提到头部执行,所以这个代码不会报错
console.log(a);//输出undefined
var a=1;
// es6中let定义的变量,必须先声明后使用,在es6中执行以上代码会报错
const定义的只读常量,值不可以改变,只声明不赋值会报错
使用const定义简单数据类型的时候(数字、字符串、布尔)可以保证值不变,定义复杂对象的时候,只能保证数据指向地址不改变,但是对象属性可以改变!
解构赋值
基本用法
let a=1;
let b=2;
let c=3;
//es6中可以写成
let [a,b,c]=[1,2,3];
解构赋值可以不完整,可以有缺失表达式,只会把对应上的部分正确赋值,如果等号左边的变量名多,右边的值少的时候会赋为undefined;
let [a,b]=[1,2,3];//a=1 b=2
let [a,b,c]=[1,2];//a=1 b=2 c=undefined
对象解构赋值
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
foo // "aaa"
bar // "bbb"
变量名对应才可以正确赋值,对应不上赋值undefined。
复杂赋值例子:
1.
const node = {
loc: {
start: {
line: 1,
column: 5
}
}
};
let { loc, loc: { start }, loc: { start: { line }} } = node;
line // 1
loc // Object {start: Object}
start // Object {line: 1, column: 5}
2.
let obj = {};
let arr = [];
({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true });
obj // {prop:123}
arr // [true]
解构赋值不允许给已声明变量赋值,如果需要赋值必须加上();
let x;
({x}={x:1});
模板字符串
es6中使用``标识,字符串变量可以写为${var}
$('#result').append(
'There are <b>' + basket.count + '</b> ' +
'items in your basket, ' +
'<em>' + basket.onSale +
'</em> are on sale!'
);
//使用模板字符串之后就不用拼接烦人的引号了!!
$('#result').append(`
There are <b>${basket.count}</b> items
in your basket, <em>${basket.onSale}</em>
are on sale!
`);