🎃
O'REILLY ハンズオンNode.js読みながらメモ
掲題のとおり。
JSは専門外だけど仕事で使うことになったので勉強するよ。
-> https://www.oreilly.co.jp/books/9784873119236/
--
1.4 JavaScriptの基本
1.4.1
- 変数宣言の
var
は古い- final的な再代入不可の
const
、再代入可能なlet
を使う
- final的な再代入不可の
1.4.5
- クラスのprivateメンバは先頭に
#
をつける- ex) static #doSomething() { //hoge }
1.4.5.1
- クラスベースとプロトタイプベースという考え方
- Javaは前者、JSは後者。
- JSにはクラスは存在しない。classで宣言されるものはシンタックスシュガー
- 使い勝手としては継承によるクラスベースのプログラミングと変わらなそう(?)
1.4.6
- JSの等価性評価は必ず
===
を使う
1.4.7.1
- CommonJSモジュールならmodule.exportsとrequire、
- ESモジュールならimport文とexport文
- メリデメがあるが、node.jsは基本的にCommonJSモジュール準拠で書く
- Webpackを導入すれば相互変換してくれる
- パスは相対パス指定する
1.4.7.2
- __filenameでファイル名、__dirnameでディレクトリ名を取れる
1.4.7.3
- strictモードを使うと型の処理が厳格化する。必ず使うべき。
- JSファイルの先頭に
'use strict';
と書くだけ。
2.3
- Promise = 非同期処理の結果インスタンス
- 非同期処理はチェーンして書ける↓
asyncFunc(input)
.then(asyncFunc2)
.then(asyncFunc3)
.then(result => { //最終処理 })
.catch(err => { //例外処理 })
2.4
- ジェネレータという仕組みがある
-
function*
で宣言。yield
で区切ったラインまで段階的に値を返していく -
next()
を呼ぶと、次のyieldまで進む。最後のyieldを過ぎると以降はundefinedになる
function* generatorFunc() {
doSomething("foo")
yield 1
doSomething("bar")
yield 2
doSomething("hoge")
}
2.4.2
- next()の挙動はイテレータ。
{ value: 'ほげ', done: true }
という形で値を持つ - doneを見ながら再起処理をすることも可能
- エラーハンドリングやチェック系の関数として使われがち
2.5
- dartでもあるasync/awaitがある。ジェネレータよりこっちのがいい。
async function hoge() {
const a = await hoge()
}
Discussion