トップ «前の日記(2010-02-12) 最新 次の日記(2010-04-02)» 月表示 編集

日々の流転


2010-02-17 [長年日記]

λ. Javascript クイズ

Javascript というか ECMA262-3 に関するクイズ。

var f = function(){ if (true) {function g() { return 1; }; }
               else {function g() { return 2;};}
               var g = function() { return 3;}
               return g();
               function g(){ return 4;}}
var result = f();

このコードの実行後に result の値はどうなるべきか?

これを知って、Javascript難しいと思った。

元ネタ: A Structural Operational Semantics for JavaScript18ページ目

本日のツッコミ(全2件) [ツッコミを入れる]
ψ nanto_vi (2010-02-18 00:56)

ECMA262-3に従うなら解答は「どうあってもよい」ですね。<br><br>(ECMA262-3に明示された仕様のみに従うなら「構文エラーになるのでresultはいかなる値をも指さない」だが、ECMA262-3は構文の拡張を許しており、しかしながら拡張された構文の意味論は実装依存なため。)

ψ さかい (2010-02-20 20:36)

確かにそうですね。<br>そうすると、このスライドで言っているのは、ECMA262-3で定められている原則か何かに従って意味論を拡張したら、ということになるのでしょうか。