ぶれすとつーる

だいたいjavascript

jsコンソールよくわからないぽよ〜

不思議ぽよ〜

{} + ""

これをコンソールで実行すると0が返るぽよ〜

f:id:nazomikan:20140216011116p:plain

f:id:nazomikan:20140216011130p:plain

でもconsole.logでみると普通ぽよ〜

f:id:nazomikan:20140216011218p:plain

f:id:nazomikan:20140216011226p:plain

むずかしいぽよ〜

数分後ぽよ〜

f:id:nazomikan:20140216012147p:plain

解決したぽよ!!!!

ただ空文字を数値化してるだけの扱いになってたぽよ!!!

+"" // 0

ありがとうございますぽよ〜><

仕様書みたぽよ〜 (harmony Rev22)

f:id:nazomikan:20140216013316p:plain

式として始まるものは{とかfunctionとかclassとかlet [ではじまっちゃいけなくてそれぞれ、それではじまってたら解釈がかわるみたいぽよ〜

それで

{} + ""

{から始まってたのでオブジェクトと空文字の加算(式)じゃなくてブロックとして解釈されてたぽよ〜

一方で

console.log({} + "");

{からの開始じゃないから式として扱われるぽよ〜

案外深くなかったぽよ〜

コンソールなにもわるくないぽよ〜

関数宣言と関数式の区別するためのあれと同じぽよ〜