elm.hogehoge に "boo"
g_test["boo"] に "foo"

が格納されてるとします。elm はある関数の辞書型の引数で、g_test は辞書型の外部変数とします。

1.
dm("g_test[" + elm.hogehoge + "] = " + g_test[elm.hogehoge]);
elm.poi = g_test[elm.hogehoge];
dm("elm.poi = " + elm.poi);

g_test[boo] = foo
elm.poi =

とデバッグ用のコンソールに出力されます(詳細に調べてみると、elm.poi は void のままでした)

2.
var woo = g_test[elm.hogehoge];
elm.poi = woo;
dm("elm.poi = " + elm.poi);

elm.poi = foo

とデバッグ用のコンソールに出力されます

どうしてなのでしょうか?
やりたいことは、単純に、

elm.poi = g_test[elm.hogehoge];

という代入がしたいだけなのですが。
ある場合において、2 .のように、一度別の変数に代入してからでなければ、
代入できないことがあったりするのでしょうか?