LoginSignup
0

More than 3 years have passed since last update.

【JS】Chromeでは動作OK。だが、iOS、safariでReferenceError!?!?

Last updated at Posted at 2020-10-28

エラー内容

sample.js
let a = xxxxx.join('');
ReferenceError: Can't find variable: xxxxx

Chromeでは、出なかった参照エラー。
ブラウザ特有のエラーということで、「safariのみ ReferenceError JS」などのワードでググってみましたが、jQueryのクリックイベントのDOM参照方法であったり、cssのcursor: pointer;を足してみるであったり、自分のエラーと本質的に異なるものばかりで諦めていました。

また、clickイベントで出たーエラーでだったので、イベントが発生するところとしない箇所でconsoleで確認してみたりと時間をかなり掛けました。

しかし、原因はとても単純でした・・・

解決策

変数宣言を変えるだけ。

sample.js
var rivalNumText = xxxxx.join('');

まさかのvarに変えるだけでした。。。

原因は結局??

varよりも、letの方が比較的新しいということで使用していました。
しかし、letはSafariやIE、iOS、またAndroidのブラウザではサポートされていないみたいです。

動作スピード的にはletやconstを使用する方が早いみたいですが、ブラウザ対応の面で考えるとその点についても考慮する必要があるみたいです。

●<コメントより修正>
letが使用できないのは、自分自身の環境の問題の可能性もあります。
対応しているブラウザであれば、ブラウザの更新でletを使用できるよう解決できます。

今回で言えば、letがどのブラウザで使えるのかこちらのサイトから確認できるみたいです。

参考

JavaScriptのvarとletについて

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