塊級作用域、字符串、函數(shù)
- 作用域
在之前的js中,只有函數(shù)作用域和全局作用域,指的是變量只能在函數(shù)中或者全局中,塊級作用域是不存在的。
例:在for循環(huán)或while等其他循環(huán)中,var 定義一個變量,在外部獲取是沒問題的,在ES6的的語法中 ,let 一個變量,在大括號外是獲取不到的。
const 是定義一個常量,定義之后是無法更改的
- 字符串
var name = "han";
var course = "你好";
//普通寫法
console.log("hello," + name + "course is" + course);
//ES6寫法 (字符串內(nèi)回車表示換行)
console.log(`hello,${name},course is ${course}`);
- 函數(shù)
//傳統(tǒng)寫法
function hello(name) {
console.log(`Hello,${name}!`);
}
//ES6寫法
const Hello = (name) => {
console.log(`Hello,${name}!`);
}
setTimeout(() => {
console.log('1秒后執(zhí)行');
}, 1000);
hello("韓貴和");
- 如果函數(shù)體只有一句return 函數(shù)大括號可以省略
const double = x => x * 2;
console.log(double(5));
const hello = (name = "Han") => {
console.log(`Hello,${name}`);
};
hello();
hello("韓貴和");
function hello(name1, name2) {
console.log(name1, name2);
}
let arr = ['Han', "韓貴和"];
//傳統(tǒng)傳入數(shù)組參數(shù)方法
hello.apply(null, arr);
//ES6寫法 使用...展開符
hello(...arr);
對象基礎(chǔ)、解構(gòu)
- Object擴展
- Object.keys、values、entries
obj = {name: 'Han', course: "WhatTheHan"};
console.log(Object.keys(obj));
console.log(Object.values(obj));
console.log(Object.entries(obj));
const obj = {
name:"Han",
hello:function () {},
//函數(shù)簡寫
Hello(){}
};
- 展開運算符(不是ES6標(biāo)準(zhǔn))
const obj = {name:'Han',course:"Hello"};
const obj2={type:'name',name:'Han'};
console.log({...obj,...obj2});
console.log({...obj,...obj2,date:"2017"});
- 解構(gòu)賦值
const arr = ["Hello","Han"];
//傳統(tǒng)寫法
let arg1 = arr[0];
let arg2 = arr[1];
//ES6語法,批量解構(gòu)賦值
let [arg1,arg2] = arr;
console.log(arg1,'|',arg2);
const obj = {name:'whatthehan',course:'React'};
const {name,course} = obj;
console.log(name,'|',course);
類、模塊化
- 提供class的語法糖
- prototype的語法糖
- Extends繼承
- Constructor構(gòu)造函數(shù)
class Han{
constructor(){
//構(gòu)造函數(shù)
this.name='HanGH';
}
sayHello(){
console.log(`Hello,${this.name} !`);
}
}
const app = new Han();
app.sayHello();
- 新的數(shù)據(jù)結(jié)構(gòu)
- Set ,元素不可重和
- Map,對象擴展
- Symbol,生成不重復(fù)變量
- 模塊化
- ES6中自帶了模塊化機制,告別sea.js和require.js
- Import , import {}
- Export , Export default
- Node 現(xiàn)在不支持,還需要require來加載文件
其他
- 對象擴展符、函數(shù)綁定
- 裝飾器
- Async await
- Promise
- 迭代器和生成器
- 代理Proxy