Safariでdivのdatasetを249回ループすると値がundefinedになる。


今回はAndroidではなくJavaScriptです。

divのdatasetをループで値を参照した時の挙動がChromeとSafariで異なっていました。

やったこと

divを配列で249個用意し、最後のdivだけdatasetにデータを入れておきます。
(あんまりやることはないと思いますが、、、)
そしてfor文で全divに対してdatasetの値を出力しました。

結果

期待値としては、248回undefined、最後1回が値が出るはずです。
Chrome(49.0.2623.108)・・・248回undefined、最後にデータ(期待通り)
Safari(9.0.3)・・・249回undefined

サンプル

配列の最後だけデータを入れると動作がおかしいですが、
最後より前にデータを入れると期待通り出力されました。

サンプル2

結果2

Safari(9.0.3)で動かすと
246回undefined
123
undefined
123
と出力されました。

原因は分かりませんが、このような動作をしていました。

Safari 9.0 の JS で「同じ関数を繰り返し実行しただけで返り値が変わる」という強烈なバグが発見されてる

Qiitaに投稿されている現象も報告されていますが、関係あるかは調べられていません。。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA