1

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

4

1 回答 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 回答