JavaScriptコードをES 6文法不完全ガイドに変更します.
7669 ワード
目次
文中の例は最新のChromeでテストしてください.ES 6からES 5を構成する環境については、本明細書で検討した範疇ではない.変数の値を変更する必要があるときは、ブロックレベル変数(let)を使用します.その他の場合は静的変数(const)を使用します. は、静的変数(const)であれ、ブロックレベル変数(let)であれ、定義を繰り返してはいけません.そうでないとエラーが発生します. 静的変数(const)が定義されると、データタイプは変更できない.しかし、参照のタイプは、Aray、Objectなど、対応するプロトタイプの方法でデータの内部を操作することができます. 変更を開始
ここで定義した変数は修正する必要がないので、直接全部constに変更します.プロジェクトでは、constに変更するか、それともletに変更するかを判断するテクニックがあります.エディタの変数チェック機能(例えば、sublimeでは変数名をダブルクリックした後、ctrl+d)が使用できます.コードにこの変数が割り当てられているかどうかを判断し、自分の判断に基づいて変数を修正する必要があるかどうかを判断します.
例を始める前に、以下の基礎データタイプを振り返ってみます.Number、String、Boolean、null、undefined、Symbol.このうちSymbolはES 6が新たに加わったものです.基本データタイプ以外は、すべて参照タイプです.一般的な参照のタイプはAray,Objectである.アプリケーションの観点から、Promiseの主な役割は、コールバック関数をチェーン式呼出しモードに変更することです. に複数のネストされたコールバック関数が存在すると、コードのインデントレベルは非常に多くなり、読み取りに不便です.ここにPromiseが登場します. は、一つのコールバック関数だけがエラー処理に関与していない場合は、Promiseの形式に変更することは推奨されない. 予備知識(コールバック関数は何ですか?)
コールバック関数とは、関数を定義し、入力されたパラメータは関数です.そして関数内の特定の位置でこの着信関数を実行し、必要なデータをパラメータとして入力します.コールバック関数は非同期プログラミングでよく見られます.例えば、Ajax要求とNodeJSにおける非同期ファイルの送信動作.百聞は一見に如かず、一番簡単な例を見ましょう.
ここでは例を挙げるためだけに、エラー処理に触れない場合は、Promiseに修正することを勧めません.
Promiseはreolveとrejectを通じて正確な結果をそれぞれチェーン式に提示しています.thenと.catch方法にあります.
予備知識(矢印関数は何ですか?)
矢印関数は関数構造を簡単にするためのツールです.
予備知識(文字列の綴り方)
文字列テンプレートで使うのはシングルクォーテーションではなく、英語で入力した状態の‘キー’です.
オブジェクトの解凍は、NodeJSがカバン内のモジュールを導入するときによく使用されます.自分が書いたオブジェクトに対して、解決が必要であれば、オブジェクト内の名前が解凍されて衝突しないようにします.ここは例を挙げて便利にするために、独特のネーミングがありません.類は文法飴ですが、これは彼を食べるのを邪魔しません. Reactでは、テンプレートの定義は、通常クラスであり、ライフサイクルの方法もクラスに書いてあります.
先端階段案内のWeChat公式アカウントに注目してみましょう.
また、私も対応するQQ群を作りました.660112451、一緒に交流することを歓迎します.
注:以上のES 6文法は著者が日常的に頻繁に使用する文法であり、すべてのES 6文法を網羅していません.読んでくれてありがとうございます.
*
* (const) (let)
*
* ( )
* (let )
* (const )
* Promise
* ( )
* ( Promise)
*
* (Arrow Function)
* ( )
* ( this )
*
*
* ( )
* ( )
*
*
* Class
中心となる例文中の例は最新のChromeでテストしてください.ES 6からES 5を構成する環境については、本明細書で検討した範疇ではない.
//
var People = function(name, age) {
this.name = name
this.age = age
}
//
var xiaoming = new People('xiaoming', 18)
//
// ,
var examStart = function(callbackSucc, callbackFail) {
var result = prompt('1+5=')
if(result === '6') {
callbackSucc('Awesome. Your answer is ' + result)
}
else {
callbackFail('You can try again. Your answer is ' + result)
}
}
//
//
examStart(function(res) {
console.log(res)
}, function(res) {
console.log(res)
})
静的変数(const)またはブロックレベル変数(let)に変更します.ここで定義した変数は修正する必要がないので、直接全部constに変更します.プロジェクトでは、constに変更するか、それともletに変更するかを判断するテクニックがあります.エディタの変数チェック機能(例えば、sublimeでは変数名をダブルクリックした後、ctrl+d)が使用できます.コードにこの変数が割り当てられているかどうかを判断し、自分の判断に基づいて変数を修正する必要があるかどうかを判断します.
// var ==> const
const Student1 = function(name, age) {
this.name = name
this.age = age
}
// var ==> const
const xiaoming1 = new Student1('xiaoming', 18)
// var ==> const
const examStart1 = function(callbackSucc, callbackFail) {
// var ==> const
const result = prompt('1+5=')
if(result === '6') {
callbackSucc('Awesome. Your answer is ' + result)
}
else {
callbackFail('You can try again. Your answer is ' + result)
}
}
examStart1(function(res) {
console.log(res)
}, function(res) {
console.log(res)
})
疑問の解釈(定義を繰り返すと何が起こるか)
const author = 'bw2'
const author = 'bw3' // Uncaught SyntaxError: Identifier 'author' has already been declared
let author = 'bw4' // Uncaught SyntaxError: Identifier 'author' has already been declared
疑問の解釈(letのブロックレベルのスコープはどのようなものですか?)
// let
if(true) {
let test1 = 2333
}
console.log(test1) // Uncaught ReferenceError: t is not defined
// var ,
if(true) {
var test2 = 2333
}
console.log(test2) // 2333
疑問の解釈(const定義の変数は基礎データタイプと参照タイプの違い)例を始める前に、以下の基礎データタイプを振り返ってみます.Number、String、Boolean、null、undefined、Symbol.このうちSymbolはES 6が新たに加わったものです.基本データタイプ以外は、すべて参照タイプです.一般的な参照のタイプはAray,Objectである.
// const , ,
const num = 2333
num = 2334 // Uncaught TypeError: Assignment to constant variable.
num = '' // Uncaught TypeError: Assignment to constant variable.
// const ,
const obj = {}
obj.test = 2333
console.log(obj.test) // 2333
const arr = []
arr.push(1)
console.log(arr) // [1]
Promiseの形に修正するコールバック関数とは、関数を定義し、入力されたパラメータは関数です.そして関数内の特定の位置でこの着信関数を実行し、必要なデータをパラメータとして入力します.コールバック関数は非同期プログラミングでよく見られます.例えば、Ajax要求とNodeJSにおける非同期ファイルの送信動作.百聞は一見に如かず、一番簡単な例を見ましょう.
//
function fun1(callback) {
// , 2333
callback(2333)
}
//
fun1(function(res){
//
console.log(res)
})
予備知識(どうやってコールバック関数をPromiseに変えるか)ここでは例を挙げるためだけに、エラー処理に触れない場合は、Promiseに修正することを勧めません.
function fun2() {
// Promise
// resolve reject
return new Promise(function(resolve, reject){
// resolve .then
// reject .ctch
resolve(2333)
})
}
fun2().then(function(res){
console.log(res) // 2333
})
変更を開始Promiseはreolveとrejectを通じて正確な結果をそれぞれチェーン式に提示しています.thenと.catch方法にあります.
const examStart2 = function() {
// Promise
return new Promise(function(resolve, reject) {
var result = prompt('1+5=')
if(result === '6') {
resolve('Awesome. Your answer is ' + result)
}
else {
reject('You can try again. Your answer is ' + result)
}
})
}
examStart2()
.then(function(res) {
console.log(res)
})
.catch(function(err) {
console.log(err)
})
矢印関数に変更します.予備知識(矢印関数は何ですか?)
矢印関数は関数構造を簡単にするためのツールです.
//
const add1 = function(a, b) {
return a + b
}
add1(1, 2) // 3
//
const add2 = (a, b) => a + b
add2(1, 2) // 3
予備知識(矢印関数のthisはピット)
// this
const obj1 = {
name: 'bw2',
showName: () => {
return this.name
}
}
obj1.showName() // ""
// : function
const obj2 = {
name: 'bw2',
showName: function() {
return this.name
}
}
obj2.showName() // "bw2"
変更を開始
var examStart3 = function() {
//
return new Promise((resolve, reject) => {
var result = prompt('1+5=')
if(result === '6') {
resolve('Awesome. Your answer is ' + result)
}
else {
reject('You can try again. Your answer is ' + result)
}
})
}
//
examStart3().then((res) => console.log(res)).catch((err) => console.log(err))
スティッチング文字列をテンプレート文字列に変更します.予備知識(文字列の綴り方)
const xh1 = 'xiaohong'
console.log('I\'m ' + xh1 + '.') // I'm xiaohong.
予備知識(テンプレート文字列に変更する方法)文字列テンプレートで使うのはシングルクォーテーションではなく、英語で入力した状態の‘キー’です.
const xh2 = 'xiaohong'
console.log(`I'm ${xh2}.`) // I'm xiaohong.
変更を開始
var examStart4 = function() {
return new Promise((resolve, reject) => {
var result = prompt('1+5=')
if(result === '6') {
//
resolve(`Awesome. Your answer is ${result}`)
}
else {
//
reject(`You can try again. Your answer is ${result}`)
}
})
}
examStart4().then((res) => console.log(res)).catch((err) => console.log(err))
オブジェクトを構成解除するオブジェクトの解凍は、NodeJSがカバン内のモジュールを導入するときによく使用されます.自分が書いたオブジェクトに対して、解決が必要であれば、オブジェクト内の名前が解凍されて衝突しないようにします.ここは例を挙げて便利にするために、独特のネーミングがありません.
const People2 = function(name, age) {
this.name = name
this.age = age
}
const xiaoming2 = new People2('xiaoming2', 18)
//
const {name, age} = xiaoming2
//
console.log(name) // xiaoming2
console.log(age) // 18
クラスに修正
class People3 {
constructor(name, age){
this.name = name
this.age = age
}
showName() {
return this.name
}
}
const xiaoming3 = new People3('xiaoming3', 18)
console.log(xiaoming3) // People {name: "xiaoming3", age: 18}
console.log(xiaoming3.showName()) // xiaoming3
飽きない?文章はもう終わりました.しかし、ES 6の探索については、引き続き更新を保存します.先端階段案内のWeChat公式アカウントに注目してみましょう.
また、私も対応するQQ群を作りました.660112451、一緒に交流することを歓迎します.
注:以上のES 6文法は著者が日常的に頻繁に使用する文法であり、すべてのES 6文法を網羅していません.読んでくれてありがとうございます.