NodeJs語法:
NodeJs中習(xí)慣用單引號
學(xué)習(xí)資源
ES6 入門教程:http://es6.ruanyifeng.com/
各大瀏覽器的支持程度:http://kangax.github.io/compat-table/es6/
一:變量的定義
//定義一個變量
//var定義的變量可以修改酌摇, 且允許重新定義(不要使用這種方式)
var a = 10
console.log('a:', a)
var a = 'hello'
console.log('a:', a)
//使用es6的語法(2015年之后的java script語法)
// let : 可以修改的變量,不允許重定義
// const: 不可以修改,定以后是常量
let b = 40
console.log('b :', b)
//可以修改
b = 'hello'
console.log('b :', b)
//不可以重新定義
// let b = 'hello'
// console.log('b :', b)
// let b = 'hello'
// ^
//
// SyntaxError: Identifier 'b' has already been declared
const c = 'hello'
// c = 40 //const 定義的常量不允許修改
二:解構(gòu)賦值
ES6 允許我們按照一定模式陨仅,從數(shù)組和對象中提取值健芭,對變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)
1.數(shù)組的解構(gòu)賦值
const arr = [1, 2, 3] //我們得到了一個數(shù)組
let [a, b, c] = arr //可以這樣同時定義變量和賦值
console.log(a, b, c); // 1 2 3
2.對象的解構(gòu)賦值(常用)
const obj = { name: '俊哥',address:'深圳', age: '100'} //我們得到了一個對象
let {name, age} = obj //可以這樣定義變量并賦值
console.log(name, age); //俊哥 100
3.函數(shù)參數(shù)可解構(gòu)一個對象(常用)
const person = { name: '小明', age: 11}
function printPerson({name, age}) { // 函數(shù)參數(shù)可以解構(gòu)一個對象
console.log(`姓名:${name} 年齡:${age}`);
//console.log("姓名:", name, "年齡:", age);
}
printPerson(person) // 姓名:小明 年齡:11 調(diào)用函數(shù)printPerson
三:函數(shù)擴(kuò)展
ES6 對函數(shù)增加了很多實(shí)用的擴(kuò)展功能
1.參數(shù)默認(rèn)值:
從ES6開始,我們可以為一個函數(shù)的參數(shù)設(shè)置默認(rèn)值
function foo(name, address = '深圳') {
console.log(name, address);
}
foo("小明") // address將使用默認(rèn)值
foo("小王", '上海') // address被賦值為'上海'
2.箭頭函數(shù):
//普通函數(shù)寫法
function add(a, b) {
return a + b
}
let res = add(10, 20)
console.log('res :', res)
//箭頭函數(shù)寫法
//定義一個變量名春瞬,變量名就是函數(shù)名
//不用function關(guān)鍵凳寺,使用=()包裹參數(shù),如果只有一個參數(shù)鸭津,()可以省略
//=> {}, 里面是函數(shù)體
//如果函數(shù)體只有一條語句肠缨,{}可以省略
//1.參數(shù)有多個,函數(shù)體語句有多個
let add1 = (a, b) => {
let result = a+b
return result
}
let res1 = add1(1, 2)
console.log('res1 :', res1)
//2.只有一個參數(shù),函數(shù)體只有一條語句
let pow = a => a * a
console.log('pow res :', pow(10))
四:類
由于js一開始被設(shè)計(jì)為函數(shù)式語言逆趋,萬物皆函數(shù)。所有對象都是從函數(shù)原型繼承而來晒奕,通過繼承某個函數(shù)的原型來實(shí)現(xiàn)對象的繼承闻书。但是這種寫法會讓新學(xué)者產(chǎn)生疑惑名斟,并且和傳統(tǒng)的OOP語言差別很大。ES6 封裝了class語法來大大簡化了對象的繼承魄眉。
class Person {
constructor(name, age){
this.name = name
this.age = age
}
// 注意:沒有function關(guān)鍵字
sayHello(){
console.log(`大家好砰盐,我叫${this.name}`);
}
}
class Man extends Person{
constructor(name, age){
super(name, age)
}
//重寫父類的方法
sayHello(){
console.log('我重寫了父類的方法!',this.name);
}
}
let p = new Person("小明", 33) //創(chuàng)建對象
p.sayHello() // 調(diào)用對象p的方法坑律,打印 大家好岩梳,我叫小明
let m = new Man("小五", 33)
m.sayHello() // 我重寫了父類的方法! 小五