js-primer
js-primer copied to clipboard
:book: JavaScript Primer - 迷わないための入門書
## 概要 Node.jsのLTSはESMをネイティブサポートしているので、[Node.jsでCLIアプリ](https://jsprimer.net/use-case/nodecli/)の章をESMベースに書き直したい。 しかし、現状のNode.js ESMは色々中途半端な部分があって完全に切り替えるかが迷いどころ。 ``` "node": "^12.20.0 || ^14.13.1 || >=16.0.0" ``` refs [Pure ESM package](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) #1337 ES2022の対応と合わせてやりたいので、大体2022年6月ぐらいまでに完了させたいイメージ。 ## Node.jsでのESMの現状 今Node ESMを扱う問題は - CommonJSとESMどっちで書くか迷う - 使ってるライブラリがPure ESMのみかどうか(CJSからimport()が必要、ESMの場合も `type:module` かmjsが必要で一手間)...
URL : https://github.com/asciidwango/js-primer/blob/master/source/use-case/todoapp/form-event/README.md > デフォルトの動作をキャンセルしていました。 > [:memo:](https://github.com/asciidwango/js-primer/edit/master/source/use-case/todoapp/form-event/README.md#L103 "Edit") ここ受動にする必要がないきはする。
## 該当ページ - [https://jsprimer.net/basic/loop/] 質問があるページのURLを入れてください ## 質問内容 > 配列のforEachメソッド > 配列にはforEachメソッドというfor文と同じように反復処理を行うメソッドがあります。 > > forEachメソッドでの反復処理は、次のように書けます。 > const array = [1, 2, 3]; > array.forEach(currentValue => { > // 配列の要素ごとに呼び出される処理 > });...
## 該当ページ - [関数と宣言](https://jsprimer.net/basic/function-declaration/) - [関数とスコープ](https://jsprimer.net/basic/function-scope/) - [関数とthis](https://jsprimer.net/basic/function-this/) など ## リクエスト/提案内容 関数定義方法のうち、`function` キーワードと関数式のいずれを推奨するか明記いただけないでしょうか。 または、どちらも差がない場合は、それぞれの特徴をまとめたセクションを設けて「どちらでも良い」旨明記するのはいかがでしょうか。 ## 背景 [関数と宣言](https://jsprimer.net/basic/function-declaration/) のページで、`function` キーワードを使った関数宣言と関数式による定義方法をそれぞれ紹介しています。 同ページの [\[コラム\] 同じ名前の関数宣言は上書きされる](https://jsprimer.net/basic/function-declaration/#function-overwrite)で、以下のように `function` キーワードや `var` を使った関数式での注意点を書いています。 > この関数定義の上書きはfunctionキーワードでの関数宣言とvarキーワードを使った関数式のみで発生します。 letやconstでは同じ変数名の定義はエラーとなるため、このような関数定義の上書きもエラーとなります。 また、[関数とスコープ](https://jsprimer.net/basic/function-scope/)...
## 該当ページ [演算子 · JavaScript Primer #jsprimer](https://jsprimer.net/basic/operator/#and-operator) [暗黙的な型変換 · JavaScript Primer #jsprimer](https://jsprimer.net/basic/implicit-coercion/#any-to-boolean) [関数と宣言 · JavaScript Primer #jsprimer](https://jsprimer.net/basic/function-declaration/#function-default-parameters) [条件分岐 · JavaScript Primer #jsprimer](https://jsprimer.net/basic/condition/#if-statement) ## 説明 falsyな値として7種類の値が挙げられていますが、正しくは-0を含めた8種類ではないでしょうか。 ### 参考 [Falsy (偽値) -...
URL : https://github.com/asciidwango/js-primer/blob/master/source/basic/function-scope/README.md ```js // `increment`関数を定義し返す関数 function createCounter() { let count = 0; // `increment`関数は`count`変数を参照 function increment() { count = count + 1; return count; } return increment; } //...
## 該当ページ - https://jsprimer.net/basic/module/ - https://jsprimer.net/use-case/todoapp/entrypoint/ ## 背景 https://github.com/Qithub-BOT/mastogetter/pull/62#discussion_r365321986 でES Moduleを使うコードを書いている時、HTMLから読み込むのはエントリーポイントのみなのか、JavaScript側でimportしているものも書かないといけないのかわからなかった ## リクエスト/提案内容 https://jsprimer.net/basic/module/#run-es-modules にはHTMLからのES Moduleの読み込みについて触れられているが、背景で述べたような問題についてヒントとなる文章はない。 そこから飛ばされている https://jsprimer.net/use-case/todoapp/entrypoint/ でも明示はないが https://jsprimer.net/use-case/todoapp/entrypoint/#module-entry-point の項でHTMLに変更を加える指示がないことから不要なのだろうと察することができる。 どこかにこのことについて明示できないか?
## 該当ページ - https://jsprimer.net/basic/loop/#const-iteration ## 質問内容 タイトルが `letではなくconstで反復処理をする` となっていますが, この節の中では `const` を使うべき理由や, `const` を使った具体例の紹介はされていないように読めました。この節の目的が一見して自分にはわかりづらかったため, タイトルと内容の組み合わせが意図的なものか, 意図的な場合その意図を教えていただけるでしょうか。
URL : https://github.com/asciidwango/js-primer/blob/master/source/basic/function-declaration/README.md > 名前をつけることができない(常に匿名関数) > [:memo:](https://github.com/asciidwango/js-primer/edit/master/source/basic/function-declaration/README.md#L522 "Edit") `const a = () => {}` は仕様に、`a.name` も取れるので、名前をつけることはできないというのは微妙なのかも。 スタックトレース的にも変数名が名前にはなるので、 > 常に匿名関数 だけでもよさそう。
1.0.0移行の差分はGitHub Releaseに載せるというフローになるけど、 具体的なタグの貼り方とかをある程度自動化/ドキュメント化したい。 [conventional-changelog/conventional-changelog: Generate changelogs and release notes from a project's commit messages and metadata.](https://github.com/conventional-changelog/conventional-changelog) を使ったリリースコマンドを作る