5

我想编写某种具有不同转换的状态机。但是当我想选择一个项目时,会发生一些奇怪的事情。

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

最后两行非常有趣 - 相同的索引,第一个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 回答