読者です 読者をやめる 読者になる 読者になる

Think Village

日々思ったこと、気づいたことを推敲もなしに気ままに書き綴っています。

とりあえずjsでマルチバイトを表現する時は ["ほげ"] 形式がいい

JavaScriptはKeyにマルチバイトを使えるイカしたやつだが、下記のようなオブジェクトを表現するときは、
Keyが文字列であるのを明示的に示さないとエラーになるケースがある。

hoge = {
  ほげ: "foo"
}

console.log( hoge.ほげ ); // ←タイプ数減って楽だけどよろしくない
console.log( hoge["ほげ"] ); // ←コレ形式がベター

でないと、マルチバイトを考慮していないライブラリなどでコケてしまう。
下記のようにuglify-jsでerrorがでてbuildできずずっと悩んでいた..。当然かもしれないが戒めとして。

    at new JS_Parse_Error (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:189:18)
    at js_error (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:197:11)
    at parse_error (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:299:9)
    at Object.next_token [as input] (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:544:9)
    at next (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:643:25)
    at subscripts (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1287:13)
    at expr_atom (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1165:20)
    at maybe_unary (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1328:19)
    at expr_ops (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1363:24)
    at maybe_conditional (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1368:20)
    at maybe_assign (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1392:20)
    at expression (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1411:20)
    at expr_list (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1178:24)
    at subscripts (/Users/hoge/node_modules/gulp-uglify/node_modules/uglify-js/lib/parse.js:1311:30)