真诚的Coffeescript捷径

时间:2013-03-20 22:37:58

标签: coffeescript

我经常想检查CS中的变量或属性是否为空且未定义。除了?的后缀undefined之外,是否有“truthy”检查的快捷方式?

1 个答案:

答案 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()