1. 程式人生 > 實用技巧 >小程式獲取使用者登入及手機號登入

小程式獲取使用者登入及手機號登入

注意:本文僅供後端開發瞭解ES6,如您是前端開發者需深入瞭解請到此地址: http://es6.ruanyifeng.com/

ES6

ECMAScript6.0(以下簡稱 ES6)是JavaScript 語言的下一代標準,已經在2015年6月正式釋出了。
它的目標,是使得JavaScript語言可以用來編寫複雜的大型應用程式,成為企業級開發語言。

ES6與JS的聯絡

	要講清楚這個問題,需要回顧歷史。1996 年 11 月,JavaScript 的創造者 Netscape 公司,決定將 JavaScript 提交給標準化組織 ECMA,希望這種語言能夠成為國際標準。次年,ECMA 釋出262號標準檔案(ECMA-262)的第一版,規定了瀏覽器指令碼語言的標準,並將這種語言稱為ECMAScript,這個版本就是1.0版。
	因此,ECMAScript和JavaScript的關係是,前者是後者的規格,後者是前者的一種實現(另外的ECMAScript 方言還有 Jscript 和 ActionScript)

ES6與ES2015的區別

	2011 年,ECMAScript 5.1 版釋出後,就開始制定 6.0 版了。因此,ES6 這個詞的原意,就是指 JavaScript 語言的下一個版本。
	ES6的第一個版本,在 2015 年 6 月釋出,正式名稱是《ECMAScript 2015 標準》(簡稱 ES2015)。
	2016 年 6 月,小幅修訂的《ECMAScript 2016 標準》(簡稱 ES2016)如期釋出,這個版本可以看作是 ES6.1 版,因為兩者的差異非常小,基本上是同一個標準。根據計劃,2017 年 6 月釋出 ES2017 標準。
	因此,ES6 既是一個歷史名詞,也是一個泛指,含義是 5.1 版以後的 JavaScript 的下一代標準,涵蓋了 ES2015、ES2016、ES2017 等等,而 ES2015 則是正式名稱,特指該年釋出的正式版本的語言標準。本書中提到 ES6 的地方,一般是指 ES2015 標準,但有時也是泛指“下一代 JavaScript 語言”。

基礎語法

ES標準中不包含 DOM 和 BOM的定義,只涵蓋基本資料型別、關鍵字、語句、運算子、內建物件、內建函式等通用語法

let宣告變數

    {
        var a = 1;
        let b = 1;
    }
    console.log(a); // 1
    console.log(b); // Uncaught ReferenceError: b is not defined

注意:let定義的變數有作用域,是區域性變數,var定義的沒有作用域,直接就是全域性變數。

   var a = 1;
   var a = 1;
   let b = 1;
   let b = 1;   //  Identifier 'b' has already been declared

注意:var定義同名變數可以重複定義,let同一個變數名只能定義一次。

const宣告常量

   const  a = 1.14;
   a = 555; // Uncaught TypeError: Assignment to constant variable.

const宣告的常量不能修改其值

const a ; // Uncaught SyntaxError: Missing initializer in const declaration

const宣告的常量必須有初始值

解構賦值

解構賦值是對賦值運算子的擴充套件。他是一種針對陣列或者物件進行模式匹配,然後對其中的變數進行賦值。

在程式碼書寫上簡潔且易讀,語義更加清晰明瞭;也方便了複雜物件中資料欄位獲取。

// 傳統
let a = 1, b = 2, c = 3
console.log(a, b, c)
// ES6
let [x, y, z] = [1, 2, 3]
console.log(x, y, z)
//2、物件解構
let user = {name: 'Helen', age: 18}
// 傳統
let name1 = user.name
let age1 = user.age
console.log(name1, age1)
// ES6
let { name, age } =  user//注意:結構的變數必須是user中的屬性
console.log(name, age)

模板字串

模板字串相當於加強版的字串,用反引號

除了作為普通字串,還可以用來定義多行字串,還可以在字串中加入變數和表示式。

// 1、多行字串
let string1 =  `Hey,
can you stop angry now?`
console.log(string1)
// Hey,
// can you stop angry now?
// 2、字串插入變數和表示式。變數名寫在 ${} 中,${} 中可以放入 JavaScript 表示式。
let name = "Mike"
let age = 27
let info = `My Name is ${name},I am ${age+1} years old next year.`
console.log(info)
// My Name is Mike,I am 28 years old next year.
// 3、字串中呼叫函式
function f(){
    return "have fun!"
}
let string2 = `Game start,${f()}`
console.log(string2);  // Game start,have fun!

宣告物件簡寫

const age = 12
const name = "Amy"

// 傳統
const person1 = {age: age, name: name}
console.log(person1)

// ES6
const person2 = {age, name}
console.log(person2) //{age: 12, name: "Amy"}

定義方法簡寫

// 傳統
const person1 = {
    sayHi:function(){
        console.log("Hi")
    }
}
person1.sayHi();//"Hi"


// ES6
const person2 = {
    sayHi(){
        console.log("Hi")
    }
}
person2.sayHi()  //"Hi"

物件擴充套件運算子

拓展運算子(...)用於取出引數物件所有可遍歷屬性然後拷貝到當前物件。

// 1、拷貝物件
let person1 = {name: "Amy", age: 15}
let someone = { ...person1 }
console.log(someone)  //{name: "Amy", age: 15}
// 2、合併物件
let age = {age: 15}
let name = {name: "Amy"}
let person2 = {...age, ...name}
console.log(person2)  //{age: 15, name: "Amy"}

箭頭函式

箭頭函式提供了一種更加簡潔的函式書寫方式。基本語法是:

引數 => 函式體

// 傳統
var f1 = function(a){
    return a
}
console.log(f1(1))


// ES6
var f2 = a => a
console.log(f2(1))
// 當箭頭函式沒有引數或者有多個引數,要用 () 括起來。
// 當箭頭函式函式體有多行語句,用 {} 包裹起來,表示程式碼塊,
// 當只有一行語句,並且需要返回結果時,可以省略 {} , 結果會自動返回。
var f3 = (a,b) => {
    let result = a+b
    return result
}
console.log(f3(6,2))  // 8

// 前面程式碼相當於:
var f4 = (a,b) => a+b

更多

http://es6.ruanyifeng.com/