检查IF条件返回false但IF中的语句仍然可以在JavaScript

时间:2016-04-05 06:29:08

标签: javascript ruby-on-rails json coffeescript frontend

我有一个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中。这有什么不妥吗?

2 个答案:

答案 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