我想用不同的转换来编写某种状态机。但是当我想要选择一个项目时会发生一些奇怪的事情。
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
info:我使用FF 14.0.1
答案 0 :(得分:2)
请注意,console.log(current_val);
会向控制台输出"true"
。由于console.log
不打印引号,因此必须是current_val
包含'"true"'
的情况,这与"true"
不同。
答案 1 :(得分:0)
这是因为在最后一个语句中,true不会被求值为字符串。