标签: existential-operator

如何使用CoffeeScript存在运算符检查未定义的某些对象属性?

我想使用CoffeeScript存在运算符来检查undefined的一些对象属性.但是,我遇到了一个小问题.

像这样的代码:

console.log test if test?
Run Code Online (Sandbox Code Playgroud)

编译为:

if (typeof test !== "undefined" && test !== null) console.log(test);
Run Code Online (Sandbox Code Playgroud)

这是我希望看到的行为.但是,当我尝试将它用于对象属性时,如下所示:

console.log test.test if test.test?
Run Code Online (Sandbox Code Playgroud)

我得到类似的东西:

if (test.test != null) console.log(test.test);
Run Code Online (Sandbox Code Playgroud)

哪个看起来不像是对未定义的检查.我可以实现与使用对象相同(1:1)行为的唯一方法是使用更大的检查:

console.log test.test if typeof test.test != "undefined" and test.test != null
Run Code Online (Sandbox Code Playgroud)

问题是 - 我做错了吗?或者编译后的代码是否足以检查属性是否存在(带有类型转换的空检查)?

coffeescript existential-operator

26
推荐指数
2
解决办法
1万
查看次数

coffeescript不为null或未定义的行为

所以我正在玩咖啡脚本并得到这种行为:

a?将转化为typeof a !== "undefined" && a !== null;- 那没关系

问题是如果我尝试相同的a.foo?.这次它转化为a.foo != null; 我得到的相同结果a[foo].

是否有"快速"的方法来检查是否a.foo为null或未定义,如有?

javascript coffeescript existential-operator

12
推荐指数
0
解决办法
9432
查看次数

CoffeeScript的存在运算符如何工作?

Coffeescript使用存在运算符来确定变量何时存在,并且在coffeescript文档中它显示something?会编译到something !== undefined && something !== null但是我注意到我的coffeescript版本只是编译它something !== null所以我写了一个测试来看看这将如何影响我的代码

taco = undefined 

if taco?
    console.log "fiesta!"
else 
    console.log "No taco!"
Run Code Online (Sandbox Code Playgroud)

编译为

// Generated by CoffeeScript 1.4.0
(function() {
  var taco;

  taco = void 0;

  if (taco != null) {
    console.log("fiesta!");
  } else {
    console.log("No taco!");
  }

}).call(this);
Run Code Online (Sandbox Code Playgroud)

并输出了一些意外,No taco!所以我的问题是两倍.为什么coffeescript不再检查价值是什么undefined以及为什么这是有效的?

coffeescript existential-operator

5
推荐指数
1
解决办法
4016
查看次数

Prolog事实中的存在量化

我正在Prolog(swi-prolog)中做我的第一步,无法解决以下问题:如何将存在量化的规则包括在我的事实中; 具体来说,我怎么能把句子"每个人都是某人的朋友" \forall x \exists y friend(x,y)作为一个事实呢?到目前为止我发现的每一个问题都只是关于查询而不是事实 谢谢!

logic prolog existential-operator

4
推荐指数
1
解决办法
450
查看次数

JavaScript 中的存在运算符?

我有一个很大的 json 对象。我需要访问x = a.b.c.d.e.f.g. 但是b(或c, d, e...) 可以是未定义的。这个数据结构是从其他地方导入的。

有没有一种方法,试图让分配xnullundefined没有引发错误?

javascript existential-operator

4
推荐指数
1
解决办法
3139
查看次数