首页 > 代码库 > CoffeeScript 存在操作符“?” 详解
CoffeeScript 存在操作符“?” 详解
在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 存在操作符“?” 详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。