【发布时间】:2013-06-07 14:07:21
【问题描述】:
我在条件运算符的真子句中遇到了未定义属性的这种意外行为:
示例: Javascript:
var obj = undefined;
console.log("hello world" + (obj) ? obj.Name.toString(): "Object not defined");
预期的行为是得到一个日志条目说 hello worldObject"not defined 而是抛出一个错误:SCRIPT5007: Unable to get value of the property 'Name': object is null or undefined。这怎么可能,对象被检查了它不应该执行 htis coe 路径。
一个工作示例是:
var obj = undefined;
console.log("hello world" + ((obj) ? obj.Name.toString(): "Object not defined"));
【问题讨论】:
-
澄清一下 - 这是一个运算符优先级问题吗?
-
我也想知道问题是什么(以及为什么在第一个代码中 obj 周围有括号)。
标签: javascript conditional-operator