我经常想检查CS中的变量或属性是否为空且未定义。除了?
的后缀undefined
之外,是否有“truthy”检查的快捷方式?
答案 0 :(得分:1)
@Austin Mullins,这是真的,但我认为它产生了检查所有内容,并发现CoffeeScript编译器将根据变量的使用产生不同的结果。
使用前声明的变量(赋值)检查!= null 。即使明确赋值 undefined (Javascript编译为 void 0 ,返回undefined)也不会改变编译器的行为。
结果是否相同?似乎按预期工作。
我找到的一个演示(预览链接),http://preview.tinyurl.com/cmo6xw7
点击链接,然后点击“运行”按钮(右上角)
代码......
((arg) ->
str = "Hello World!"
num = 42
foo = arg
# Lets see what the compiler produces
alert "str is #{str}" if str?
alert "num is #{num}" if num?
alert "foo is #{foo}" if foo?
# bar has not been assigned a value or used until now
alert "bar is #{bar}" if bar?
# Lets assign str to something that isn't straight up null
# cs will translate undefined into the expression that returns undefined
str = undefined
# Shorthand
if str?
alert "str? is #{str}"
else
alert "str? is empty"
# Explicit checks
if typeof str isnt "undefined" && str isnt null
alert "str explicit check is #{str}"
else
alert "str explicit check is empty"
).call()