本当にあった怖い話【Node編】

都内某所(Node -v 4.0.0)

その日は教授からの無茶振りで円周率をもとめるマチンの公式をjqueryのプラグインに書きおろそうとしていました。私は一度プラグイン化する前にNodeでコードを試運転する癖があるのですが、その日もPythonコードをjavascriptに書き直してNodeでプログラムを動かしていました。そのとき、とても奇妙なことが起こったのです。
Nodeで同じコードが動かない
最初は私自信のミスだと考えていました。しかし、何度見直してもおかしいところが見当たりませんが、そのうちに怪しいところがわかってきました。それは変数の同時代入です。  

:Python

1
> s = k = 1

:Node.js

1
> var s,k = 1;

どちらも変数s,kに1を代入している部分です。バグを探してるうちに、Nodeではsにundefinedが入っていると確信しました。それもそのはず、javascriptでの同時代入はPythonと同じ方法で、こちらの文法のミスだったようです。安堵した私はNodeで確認しようとしました。
:Node.js

1
2
3
4
5
6
> var s,k = 1;
undefined
> s
undefined
> k
1

やはり私は同時代入の文を勘違いしていたらしい。てへっ。暇だしもう一度テストしてみよ。そう思った私は、もう一度上記のコードを実行してみました。そのとき、それは起こったのです。
:Node.js

1
2
3
4
5
6
> var s,k = 1;
undefined
> s
1
> k
1

!? なんと同時代入が成功している!!!この後何度も実行してみましたが、やはりsにはundefinedが定義され、1が代入されたのは一回のみでした。この現象が仕様かバグかは判断しかねますが、もし詳しい情報をご存知の方がいたら是非ご一報ください。

Hello

ごあいさつ

はじめまして〜
このブログでは技術ネタや身の回りの役に立ちそうな知識などを垂れ流していきます。
よろしくお願いします。