点击查看 ECMAScript 6语法参考.
ECMAScript 6
块级作用域 let
let 局部定义 vs var 全局定义
{
let a = 200;
console.log(a); //可以打印出来
}
console.log(a); //打印不了
let 不可重复定义
var 可以重复定义
只读变量 const
//声明时就要进行初始化,否则会报错
const i = 0; //无法修改
// const声明对象 对象的绑定不能修改,但对象的属性和值可以修改
const person={
name:'code'
}
person.name='cc' //ok
// 如果是在代码块中,就跟let一样了(局部变量)
模板语法
ES5
let msg='I'm ok';
console.log(msg);
var msg="hello"+"world"
console.log(msg)
ES6 推荐 模板语法 ``
var msg=`hello \ I'm a student`;
console.log(msg)
··· console ···
hello I'm a student
let msg = `听党指挥
能打胜仗
作风优良
`
console.log(msg)
··· console ···
听党指挥
能打胜仗
作风优良
【字符串占位符】${}
let name = 'zhangsan';
let msg = `Hello! my name is ${name}`
console.log(msg)
··· console ···
Hello! my name is zhangsan
了解解构赋值
箭头函数
Es6 允许箭头函数 =>
单一参数
let f = v => v;
f(1) // 1
等价于
let f = function(v){
return v;
}
f(1) // 1
等价于
function f(v){
return v;
}
f(1) // 1
没有参数
let f2 = () =>'hello world'
console.log(f2());
··· console ···
hello world
多个参数
let f3 = (a,b) => a + b
console.log(f3(4,5))
··· console ···
9
箭头函数返回对象 要用()包裹起来
// 多参简写 ...arg
let calculate = (yun, ...arg) => {
let sum = 0;
let sum2 = 1
if (yun == '*') {
for (let i = 0; i < arg.length; i++) {
sum2 *= arg[i];
}
return sum2;
}
if (yun == '+') {
for (let i = 0; i < arg.length; i++) {
sum += arg[i];
}
return sum;
}
}
console.log(calculate('+', 3, 5, 5));
console.log(calculate('*', 1, 5, 5, 2));