Why learn ES6
Master the connection and difference of ES3, ES5 and ES6
Getting started ES6
Learn to build ES6 compilation environment quickly
Learning ES6:
- constant
- Scope of action
- Arrow function
- Default parameters
- Object agent
git git clone https://github.com/cucygh/es6-webpack.git cd es6-webpack && npm install npm i npm i webpack -g npm i webpack-dev-server -g npm start
image.png
touch src/const.js create file
constant
// Writing constant in ES5 Object.defineProperty(window, "PI2", { value: 3.1415926, writable: false, }) console.log(window.PI2) // Constant writing of ES6 const PI = 3.1415926 console.log(PI) // PI = 4
Scope of action
// Scope in ES5 const callbacks = [] for (var i = 0; i <= 2; i++) { callbacks[i] = function() { return i * 2 } } console.table([ callbacks[0](), callbacks[1](), callbacks[2](), ]) const callbacks2 = [] for (let j = 0; j <= 2; j++) { callbacks2[j] = function() { return j * 2 } } console.table([ callbacks2[0](), callbacks2[1](), callbacks2[2](), ]) ;((function() { const foo = function() { return 1 } console.log("foo()===1", foo() === 1) ;((function() { const foo = function() { return 2 } console.log("foo()===2", foo() === 2) })()) })()) { function foo() { return 1 } console.log("foo()===1", foo() === 1) { function foo() { return 2 } console.log("foo()===2", foo() === 2) } console.log("foo()===1", foo() === 1) }
Arrow function
function a(){ ()=> { }}
/* eslint-disable */ { // ES3,ES5 var evens = [1, 2, 3, 4, 5]; var odds = evens.map(function(v) { return v + 1 }); console.log(evens, odds); }; { // ES6 let evens = [1, 2, 3, 4, 5]; let odds = evens.map(v => v + 1); console.log(evens, odds); } { // ES3,ES5 var factory = function() { this.a = 'a'; this.b = 'b'; this.c = { a: 'a+', b: function() { return this.a } } } console.log(new factory().c.b()); // a+ }; { var factory = function() { this.a = 'a'; this.b = 'b'; this.c = { a: 'a+', b: () => { return this.a } } } console.log(new factory().c.b()); // a }
Default parameters
image.png
/* eslint-disable */ { // ES5\ES3 default parameter writing function f(x, y, z) { if (y === undefined) { y = 7; } if (z === undefined) { z = 42 } return x + y + z } console.log(f(1, 3)); } { // ES6 default parameters function f(x, y = 7, z = 42) { return x + y + z } console.log(f(1, 3)); } { function checkParameter() { throw new Error('can\'t be empty') } function f(x = checkParameter(), y = 7, z = 42) { return x + y + z } console.log(f(1)); try { f() } catch (e) { console.log(e); } finally {} } { // ES3,ES5 variable parameters function f() { var a = Array.prototype.slice.call(arguments); var sum = 0; a.forEach(function(item) { sum += item * 1; }) return sum } console.log(f(1, 2, 3, 6)); } { // ES6 variable parameters function f(...a) { var sum = 0; a.forEach(item => { sum += item * 1 }); return sum } console.log(f(1, 2, 3, 6)); } { // ES5 merge array var params = ['hello', true, 7]; var other = [1, 2].concat(params); console.log(other); } { // ES6 merges arrays with extended operators var params = ['hello', true, 7]; var other = [ 1, 2, ...params ]; console.log(other); }
Object agent
/* eslint-disable */ { // ES3,ES5 data protection var Person = function() { var data = { name: 'es3', sex: 'male', age: 15 } this.get = function(key) { return data[key] } this.set = function(key, value) { if (key !== 'sex') { data[key] = value } } } // Declare an instance var person = new Person(); // read console.table({name: person.get('name'), sex: person.get('sex'), age: person.get('age')}); // modify person.set('name', 'es3-cname'); console.table({name: person.get('name'), sex: person.get('sex'), age: person.get('age')}); person.set('sex', 'female'); console.table({name: person.get('name'), sex: person.get('sex'), age: person.get('age')}); } { // ES5 var Person = { name: 'es5', age: 15 }; Object.defineProperty(Person, 'sex', { writable: false, value: 'male' }); console.table({name: Person.name, age: Person.age, sex: Person.sex}); Person.name = 'es5-cname'; console.table({name: Person.name, age: Person.age, sex: Person.sex}); try { Person.sex = 'female'; console.table({name: Person.name, age: Person.age, sex: Person.sex}); } catch (e) { console.log(e); } } { // ES6 let Person = { name: 'es6', sex: 'male', age: 15 }; let person = new Proxy(Person, { get(target, key) { return target[key] }, set(target,key,value){ if(key!=='sex'){ target[key]=value; } } }); console.table({ name:person.name, sex:person.sex, age:person.age }); try { person.sex='female'; } catch (e) { console.log(e); } finally { } }
Output 0 to 9 in sequence
for (let i = 0; i < 10; i++) { func.push(function() { console.log(i) }) }
What are the new features of arrows?
No function keyword is required to create a function
Omit return keyword
Inherit this keyword from the current context
Please praise! Because your approval / encouragement is the biggest driving force of my writing!
Welcome to your attention. Da Shu Xiao Sheng The short book!
This is a blog with quality and attitude
Blog