質問: p.exec(str)) !== null) { console.log(result[0]); } } ``` execメソッドの勉強中にエラーが起き内容が『定義されていません』と出ました。 教科書に書いてあるコードをそのまま書き換えてもエラーが起きっぱなしでした。 ちなみに参考図書は「JavsaScript本格入門」です。 原因がいくら調べてもわからないのでどなたかご教授よろしくお願いします🙇♂️
回答: > > 『定義されていません』 > > > エラーは `Uncaught ReferenceError: result is not defined at ...` ですね エラーを読むときはメッセージ終端の **at**以降に着目します(**ファイル名 行:桁**でエラー箇所を示している)。 ご質問のコードですと `while` の条件式における 変数 `result` の箇所を指しています。 > > 原因がいくら調べてもわからない > > > **エラー原因**: strict mode なので、変数 `result` が宣言されていないためです。 ``` 'use strict' { let result; // strict モードでは変数宣言しておく必要がある let p = /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/gi; let str = 'サポートサイトはhttps://www.google.com/です。'; str += 'サンプル紹介サイトHTTP://www.web-deli.com/もよろしく!'; while ((result = p.exec(str)) !== null) { console.log(result[0]); } } ``` > > 教科書に書いてあるコードをそのまま > > > 書籍内(奥付など)に印刷されたサポートページを確認するのも解決の助けになると思います。 * 出版社のウェブサイトには、訂正箇所が報告されていることがあります。 報告されていない場合は「誤植の発見」を連絡されるのも良いかもしれません。