0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#プログラミング #Javascript # バグネタ

Last updated at Posted at 2025-04-16

自分のバグを生みそう・生んだもの。

なんかエンジン(Chrome)や言語のバグのような気もするけど。。。
※仕様。(記事コメントより)
 ただ、そうなると仕様の意図がわからんな。
 それじゃ配列にする意味がないだろうに:sweat_smile:
とりあえずこれはChrome上だけど、多分Node.jsとかでも同じになる気がする。
fillメソッドの引数はforeachとかみたいに毎回実行されるのではなく、最初に用意して使いまわすってことっぽい。
(配列内は同一オブジェクトを参照してる。)

スクリーンショット 2025-04-16 053056.png

ちなみにそういう初期化をしようとして更に気づいたのはこれ。
何故かmapメソッドは機能しない。
fillメソッドは「new Array(5).fill~」としても使える。
※fillメソッドは疎配列に対応してるため。(記事コメントより)

スクリーンショット 2025-04-16 053822.png

既知だと思うけど、JSの要素が無いことと中身がないことは別のこと。
長さ3のaという配列で、delete a[1]とするとa[1]はundefinedになるが、その要素は存在し、中身が無いだけ。
(要素が存在するという根拠は、aの長さは3のままになるので。)
ただ、a[3]もundefinedになるから、挙動が曖昧な気もちょっとするけど。。。
中身がなくても要素があればfillもmapも機能すると思うんだけどね~。
ま、敢えてなら、mapは「元を利用して」だから、中身も無いとって解釈もできるけど。

0
0
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?