
for文ではなく、mapを使うようなソースを見たのですが、内部が気になってしまいました。
なかなか調べても内部を解説している記事がなく、どのように調べれば内部がわかるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
動作の仕様を確認したい場合
Array.prototype.map
およびArray.prototype.filter
はECMAScriptで定義された標準組込関数です。ECMAScriptの仕様書にそれらの関数がどのような処理をすべきかが記載されています。
- Array.prototype.filter - ECMAScript® 2017 Language Specification
- Array.prototype.map - ECMAScript® 2017 Language Specification
実装を確認したい場合
V8(ChromeのJavaScriptエンジン)やSpiderMonkey(FirefoxのJavaScriptエンジン)はオープンソースであり、レポジトリが公開されています。
V8のソースコードを見ましたが、JITコンパイラであるため、単純に処理が書いているわけではありません。私も詳しいことはわかりませんが、Array.prototype.map
であれば、src/builtins/builtins-array-gen.ccの所2891行目
C++
1 GenerateIteratingArrayBuiltinBody( 2 "Array.prototype.map", &ArrayBuiltinsAssembler::MapResultGenerator, 3 &ArrayBuiltinsAssembler::FastMapProcessor, 4 &ArrayBuiltinsAssembler::NullPostLoopAction, 5 Builtins::CallableFor(isolate(), Builtins::kArrayMapLoopContinuation), 6 MissingPropertyMode::kSkip); 7}
で組込関数として登録してあり、326行目で定義されているNode* ArrayBuiltinsAssembler::FastMapProcessor(Node* k_value, Node* k)
がコア部分のようです。(行数は現在のmasterですが、バージョンが変われば多少変化します)
投稿2018/05/04 09:51
編集2018/05/04 09:52総合スコア21751
0
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
上記それぞれのリンク先下部にある「Polyfill」というセクション以下のコードを参考にされると良いかと思います。
投稿2018/05/04 09:48
総合スコア2415
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。


あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/05 00:27