【发布时间】:2016-07-24 22:35:42
【问题描述】:
我有一个 JavaScript 检查对象是否存在,如下所示,在 .hamlc 中:
假设@object1 在这里不存在。
var property01;
// work as expected
if (!#{@object1}) {
console.log("not exist"); // print
} else {
console.log("exist");
}
这项工作按预期工作,并在控制台中显示文本“不存在”,但有一种情况是如果 object1 确实存在,所以我想添加:
var property01;
if (!#{@object1}) { // should execute here and end the condition but not
console.log("not exist"); // not print
property01 = 'undefined';
} else {
console.log("exist"); // not print as well
property01 = '#{@object1.property01}'; // Delete this line will work normally but not what it should be.
}
上面返回一个错误说“无法读取未定义的属性'property01'。
我这样做的原因是另一个页面应用了这个可能有@object1在这里传递所以它取决于应用的页面但我只想让它工作无论对象“@object1”是否存在。
我知道当前@object1 是未定义的,因为它没有通过。因此,它应该只分配 IF 语句中所述的“未定义”,而不涉及 ELSE。这有什么问题吗??
【问题讨论】:
-
无法读取 'property01' 的属性不存在,这就是为什么给出错误和错误,因为你试图分配不存在的 obj
property01 = '#{@object1.property01}' -
是的,我知道如前所述,但即使它是错误的,为什么真实条件的陈述有效?它应该执行 IF 条件而不是 ELSE 条件
-
查看我下面的帖子,如果未定义或为空,则跳转到 else 语句。
标签: javascript ruby-on-rails json coffeescript frontend