原因不明のreturn not in function/syntax error
発端
Javascriptのテストのためにテキトーな書き捨てのHTMLを作成し、そこからインポートして実行しようとしたところ、不可解なエラーに襲われた。いろいろ調べたところ、コメントの近くでエラーが出ている。
さらにいろいろ試してみたところ、なんとなく「日本語のコメント」がエラーを招いている様子。
解決
http://www.doevery.com/Diary/2008/01/ie-javascript-utf8.html
こんなページを見つけ、もしやと思い、テキトーな書き捨てのHTMLに
<meta content="text/html" charset="utf-8" http-equiv="Content-Type"/>
を追加したところ、きれいにエラーはなくなった。Chromeでは大丈夫なんだけどな。
エラーの例
//のコメントの次の行の解釈がおかしくなる
//関数についての説明 function example(i){ var ret_value = i+1; return ret_value; }
→return not in function 関数exampleも定義されていないと見なされてしまう
function example(i){ //関数についての説明 var ret_value = i+1; return ret_value; }
→ret_value is not defined
/**/コメントで日本語の直後に*/を書くとおかしくなる
/*関数についての説明*/ function example(i){ return i+1; }
→unterminated comment 関数exampleも定義されていないことに
対処
その1:面倒がらずにContent-typeを書く
<meta content="text/html" charset="utf-8" http-equiv="Content-Type"/>
その2:コメントを
/* コメント */
の形で記述する。
どっちが楽かの判断はお任せします。書き捨てのプログラムで変にはまると凹みますね。