现在项目用CoffeeScript,而且感觉CoffeeScript语法挺简洁的,但是一直没有把问号搞明白,看着官方文档学习了下,顺便整理下自己的理解。
1、如果问号后面不再接其他的变量
如 a?, 此时会被编译为
typeof a !== "undefined" && a !== null,
但是需要注意的是a和?之间是没有空格的
2、如果为 a ? b, 则会被编译成
if (typeof a !== "undefined" && a !== null)
{a}
else
{b}
此时a与?之间是有空格的,
如果为a? b,也就是a与?之间没有空格,那么就是
if (typeof a === "function")
{ a(b) }
此时是判断a是否为方法并进行方法调用
3、如果为a?.b,则会被编译成
i f (typeof a !== "undefined" && a !== null)
{a.b},
此时是判断a是否存在并调用其属性b。