5

さまざまな遷移を持つある種のステート マシンをコーディングしたいと考えています。しかし、アイテムを選択しようとすると、奇妙なことが起こります。

var transitions = {
    "on": {
        "false":"true",
        "true":"false"
    }
}

最後の 2 行は非常に興味深いものです。最初と 2 番目は同じインデックスでhardcoded、変数に格納されています。前者が正しい結果 (false) を返し、後者が未定義であるのはなぜですか?

console.log(attr);                             // on
console.log(transitions[attr]);                // Object { false="true, true="false" }
console.log(current_val);                      // "true"
console.log(typeof current_val);               // string
console.log(transitions[attr]["true"]);        // false
console.log(transitions[attr][current_val]);   // undefined

情報: FF 14.0.1 を使用しています

4

2 に答える 2

2

コンソールにconsole.log(current_val);出力されることに注意してください。"true"は引用符を出力しないため、 と同じではなく、を含むconsole.logケースでなければなりません。current_val'"true"'"true"

于 2012-08-28T07:41:40.730 に答える
0

これは、最後のステートメントで true が文字列に評価されないためです。

于 2012-08-28T07:34:15.970 に答える