字符串中的 JavaScript 条件运算符会引发错误

标签 javascript conditional-operator

我在条件运​​算符的 true 子句中遇到了未定义属性的意外行为:

示例: JavaScript:

var obj = undefined;

console.log("hello world" + (obj) ? obj.Name.toString(): "Object not defined");

Fiddle

预期的行为是获取一个日志条目,显示hello worldObject“未定义”,而是抛出错误:SCRIPT5007:无法获取属性“Name”的值:对象为 null 或undefined 。这是怎么回事,该对象已被检查,它永远不应该执行 htis coe 路径。 一个有效的例子是:

var obj = undefined;

console.log("hello world" + ((obj) ? obj.Name.toString(): "Object not defined"));

Fiddle

最佳答案

尝试这个条件:

console.log("hello world" + ((obj || {}).Name) ? ...);

或者也

console.log("hello world" + ((obj || 0).Name) ? ...);

因此您将检查 objobj.Name
事实上,您定义的条件仅检查 obj 而不是 obj.Name

您可以在 ajaxian 上阅读有关此类情况的解释

关于字符串中的 JavaScript 条件运算符会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986116/

相关文章:

javascript - 限制用户使用cordova访问Android设备中的应用程序数据

javascript - 父级刷新 - JavaScript

java - 在 Java 中转换内部条件运算符

swift - 为什么 Swift 的三元运算符对空格如此挑剔?

javascript - 数据在 JQuery 中未经验证而更新

javascript - 更好地按屏幕尺寸处理台式机、手机和平板电脑或检测平板电脑/手机/台式机?

c - 表达式的类型是否必须与 C 中的条件表达式相同?

c++ - 需要左值作为条件运算符中赋值的左操作数

swift - 有没有一种简单的方法可以测试您是否匹配一组枚举中的一个?

javascript - 来自 URL 的 iframe 源