我经常想检查一个变量或属性是否在 CS 中不为空且未定义。除了后缀之外,还有“真实”检查的快捷方式?
吗undefined
?
问问题
119 次
1 回答
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()
于 2013-03-21T00:19:30.410 回答