🎃

O'REILLY ハンズオンNode.js読みながらメモ

2021/10/18に公開

掲題のとおり。
JSは専門外だけど仕事で使うことになったので勉強するよ。
-> https://www.oreilly.co.jp/books/9784873119236/

--

1.4 JavaScriptの基本

1.4.1

  • 変数宣言のvarは古い
    • final的な再代入不可のconst、再代入可能なletを使う

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