都内某所(Node -v 4.0.0)
その日は教授からの無茶振りで円周率をもとめるマチンの公式をjqueryのプラグインに書きおろそうとしていました。私は一度プラグイン化する前にNodeでコードを試運転する癖があるのですが、その日もPythonコードをjavascriptに書き直してNodeでプログラムを動かしていました。そのとき、とても奇妙なことが起こったのです。
Nodeで同じコードが動かない
最初は私自信のミスだと考えていました。しかし、何度見直してもおかしいところが見当たりませんが、そのうちに怪しいところがわかってきました。それは変数の同時代入です。
:Python1
> s = k = 1
:Node.js1
> var s,k = 1;
どちらも変数s,kに1を代入している部分です。バグを探してるうちに、Nodeではsにundefinedが入っていると確信しました。それもそのはず、javascriptでの同時代入はPythonと同じ方法で、こちらの文法のミスだったようです。安堵した私はNodeで確認しようとしました。
:Node.js1
2
3
4
5
6> var s,k = 1;
undefined
> s
undefined
> k
1
やはり私は同時代入の文を勘違いしていたらしい。てへっ。暇だしもう一度テストしてみよ。そう思った私は、もう一度上記のコードを実行してみました。そのとき、それは起こったのです。
:Node.js1
2
3
4
5
6> var s,k = 1;
undefined
> s
1
> k
1
!? なんと同時代入が成功している!!!この後何度も実行してみましたが、やはりsにはundefinedが定義され、1が代入されたのは一回のみでした。この現象が仕様かバグかは判断しかねますが、もし詳しい情報をご存知の方がいたら是非ご一報ください。