@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

JScriptコンパイルエラーの怪

{
    // 判定
}

こういう何もしないJavaScriptファイルがあります。 Windowscscriptコマンドで実行するとあるときはコンパイルエラーをおこし

f:id:ledsun:20211027151704p:plain
コンパイルエラーがおきます

あるときはコンパイルエラーを起こしません。

f:id:ledsun:20211027151740p:plain
コンパイルエラーがおきません

JavaScriptの内容は全く同じなのに不思議ですよね (答えはファイル名にあります。)。

WSH(JScript)でコードを書いてみる - バグ取りの日々

WSHのcscript/wscriptのアプリは以前のWindows環境を元に作成されており、また今後のバージョンアップは絶望的であるため、日本語環境WSHの標準文字コードShift_JISになります。

そうです。ファイルのエンコードUTF-8のためおきています。 でも、コメントですよ?文字化けしたってソースコードに関係無いはずじゃないですか。

もう一個合わせ技があります。 改行コードをLFにするとコンパイルエラーがおきます。 CRLFにするとコンパイルエラーはおきません。 知ってたら簡単な話なんですが、知らないとなかなか改行コードの差に思い至らなくて特定に時間が掛かります。 丸一日掛かったりします。

しかも、gitにautocrlfてあるじゃないですか。 改行コードを自動的にLFからCRLFに変えるやつ。 つまり、個人の環境毎に起きたり起きなかったりするんですよ。 怖いですねー。