首页 > 其他 > 详细

CoffeeScript 存在操作符“?” 详解

时间:2014-10-15 19:45:13      阅读:333      评论:0      收藏:0      [点我收藏+]

在JavaScript中使用if来做null检查是很常见的,但是其中有几个陷阱,空字符串和零都被强制转化为false,这往往会让你犯错。

if (typeof p !== "undefined" && p !== null) {  p.func();}

CoffeeScript存在操作符?只会在变量为null或者undefined的时候会返回真,与Ruby的nil?类似。到了CoffeeScript中,上面的代码直接被简化成:

p?.func()

意思就是变量p定义且被实例化过,则调用"func"方法,否则就不调用。


网络上有说:存在操作符可以替换||操作符,这种观点是不严格的,严格说是错误的

eg:

a = "123"

b = a || 30

alert b

说明:

    当a的值不为空时可以用?替换||,此时alert 为123

    如果a="",此时用?则alert为空(空白)  用|| alert为30

    如果上面的变量a删除  ?对应 alert为30  用||编译报错



如果你在访问属性之前进行null检查,你可以把存在操作符放在它左边来跳过检查。这与Actice Support的try方法比较类似。

blackKnight.getLegs()?.kick()


你能够用同样的方法检查一个属性是否是函数,是否可以调用,把存在操作符放在括号之前就行。如果属性不存在,或者不是一个函数,则就不会被调用。

blackKnight.getLegs().kick?()


本文出自 “日食先生” 博客,请务必保留此出处http://issac.blog.51cto.com/1801082/1564500

CoffeeScript 存在操作符“?” 详解

原文:http://issac.blog.51cto.com/1801082/1564500

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!