.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. Javascript
  5. Unexpected tokenとは?Unexpected tokenの対処法を紹介!

Unexpected tokenとは?Unexpected tokenの対処法を紹介!

  • Javascript
  • プログラミング言語
公開日時:   更新日時:
Unexpected tokenとは?Unexpected tokenの対処法を紹介!
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    システム
    エンジニア
    JavaScriptでプログラミングをしていてうごかなくなったときの対処方法について教えてください。
    プロジェクト
    マネージャー
    分かりました。それでは、JavaScriptでプログラミングをしてい動かなくなったときに出るUnexpected tokenについてご紹介します。

    Unexpected tokenとは?


    Unexpected tokenとはJavaScriptで発生するエラーメッセージです。JavaScriptでプログラミングをしていると、これが出て動かないことがよくあります。Unexpected tokenは直訳すると「予期しないトークンがあります」という意味で、漠然としていて原因がわかりにくいのです。

    この記事ではどういうケースでUnexpected tokenが発生しやすいのかと、他の良く出るエラーを解説します。エラーに悩まされている人は是非ご覧下さい。

    JavaScriptのエラーメッセージを見る方法

    初心者の人はそもそもJavaScriptのエラーメッセージを見る方法がわからないでしょう。それを見る方法は、Google Chromeの場合は画面で右クリックして、メニューの「検証(I)」を選択します。するとDevToolsが起動します。

    DevToolsの上にあるタブの「Console」をクリックしましょう。これでエラーメッセージを見ることができます。

    Unexpected tokenを発生させる

    では早速、Unexpected tokenをわざと発生させてみましょう。例えば以下のようなケースでこのエラーは発生します。

    これを実行すると、DevToolsのConsoleに以下のようにエラーが出ます。

    Uncaught SyntaxError: Unexpected token ‘;’ test.html:6

    余計なトークンがあるとUnexpected tokenになる

    上のメッセージの「test.html:6」は6行目でエラーが発生しているという意味で、「;」が予期しないトークンということです。これは「i < 5;;」の;(セミコロン)が1つ余計にあることが原因です。;を一つ取り除いて「i < 5;」とすれば、以下のように動作します。

    No. 0
    No. 1
    No. 2
    No. 3
    No. 4

    こういったタイプミスはよくあるので、Unexpected tokenは頻繁に発生します。ただこのようなケースはまだ分かりやすい方なのです。なおconsole.logはDevToolsのConsoleに出力をするメソッドです。

    変数や関数の名前に注意

    変巣や関数の名前に問題がある場合も、Unexpected tokenが出ます。

    test-valも test-funcも「Unexpected token ‘-‘」が発生します。JavaScriptの変数や関数の名前に使える記号は$と_だけなので、test_valやtest_funcにしましょう。

    何かが足りない時でも発生する

    Unexpected tokenは余計な物がある時だけではなく、以下のように何かが足りない時にも出ます。これがやっかいなところです。

    これを実行すると、以下のようなエラーが出ます。

    Uncaught SyntaxError: Unexpected token ‘{‘

    しかし{が余計と言われても、このif文の{は必要です。初心者はどうしたらよいかわからなくなってしまうでしょう。

    上記のエラーは以下のように直せばOKです。)が足りなかったということです。

    あるはずの)の前に{が出てきたので、{が余計だというUnexpected tokenのエラーが出てしまったということです。)が無いというエラーが出ればいいのにと思いますが、仕方がないのでしょう。

    Unexpected end of inputは分かりにくい?

    上記のサンプルに近い状況で、Unexpected end of inputというエラーが出る場合があります。以下のようなケースで発生します。

    最後に}がありません、カッコの閉じ忘れです。この様に単純なプログラムであれば忘れることはまずありませんが、カッコが何重ものネストになっているとカッコを閉じ忘れることがあるので、このエラーを見ることが多くなるでしょう。

    Uncaught ReferenceErrorはよく発生する

    Uncaught ReferenceErrorも良く見かけるエラーです。以下のようなケースで発生します。

    これを実行すると以下のエラーが出ます。

    Uncaught ReferenceError: val is not defined

    変数をvalueで宣言しているのに、その後にvalでアクセスしているので、そのような変数は無いですよというエラーが出ます。良くあるエラーですが、これはまだ分かりやすいでしょう。

    Cannot read property ~ of undefinedはハマりやすい

    Cannot read property~というエラーは何が間違っているのかわかりにくい場合があります。

    これを実行すると、Consoleに「undefined」とだけ表示されます。エラーにはなりません。ところが、

    この場合は以下のエラーが出ます。

    Uncaught TypeError: Cannot read property ‘length’ of undefined

    Cannot read property ~ of undefinedに要注意

    JavaScriptはこのソースのstr.mojiのように存在しないプロパティにアクセスしてもエラーにはなりません。しかし、その存在しないプロパティのプロパティにアクセスするとこのCannot read property ~ of undefinedが出るのです。

    str.mojiの時点でエラーにならないため、分かりにくく感じる人もいるでしょう。

    また以下のようにオブジェクトの扱いで間違いをした場合もこのエラーが出ます。

    エラーメッセージに惑わされないようにしよう

    上のオブジェクトの例ではキーをobjKeyではなくobjeKeyと間違えて指定しているため、

    Uncaught TypeError: Cannot read property ‘length’ of undefined

    というエラーが出ます。しかしlengthというプロパティは本来はあるので、このエラーを見て、あるはずのプロパティがなぜないことで混乱しやすいのです。

    配列でもわかりにくいエラーが発生する

    配列でも同様にCannot read property~が発生します。

    このサンプルは存在しない5番目にアクセスしていますが、ただアクセスするだけならundefinedでエラーにはなりません。しかし.lengthにアクセスすると、

    Uncaught TypeError: Cannot read property ‘length’ of undefined

    というエラーになります。この場合もlengthというプロパティ自体は存在するので、エラーメッセージからは読み取りづらいです。

    システム
    エンジニア
    なるほど、そういうことですね。Unexpectedtokenについてよく分かりました。
    プロジェクト
    マネージャー
    Unexpectedtokenのメッセージが間違った箇所を適切に指摘しない場合についてもご紹介しましたのでご参考ください。

    Unexpected tokenなどのエラーに注意しよう

    Unexpected tokenなどのJavaScriptのエラーを解説しましたがご理解頂けましたでしょうか。慣れてくれば的外れに感じるエラーメッセージも、気にならなくなってくるでしょう。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    新着案件New Job