我有一个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语句中声明的'undefined',而不是在ELSE中。这有什么不妥吗?
答案 0 :(得分:0)
我认为你不小心将property01设置为' undefined'的字符串。如果您想保持脚本不变,只需删除第3行的引号:
if (!#{@object1}) {
console.log("not exist");
property01 = undefined;
} else {
console.log("exist");
property01 = '#{@object1.property01}';
}
答案 1 :(得分:0)
如果存在@object1
,则分配给此property01
,否则undefined
var property01;
property01 = (!#{@object1}) ? '#{@object1.property01} : undefined