Javascript默认参数

时间:2012-08-15 17:29:52

标签: javascript

当一个愚蠢的问题出现时,我正在阅读Three.js代码:下面的代码之间有什么区别吗?

frameHeight = frameHeight !== undefined ? frameHeight : 24;

frameHeight = frameHeight || 24;

(frameHeight是函数的参数)

由于

4 个答案:

答案 0 :(得分:9)

是的,他们是不同的。

frameHeight = frameHeight || 24;

这会将frameHeight强制转换为布尔值。如果是0''falsenullundefinedNaN,则为false,frameHeight将默认为24。

frameHeight = frameHeight !== undefined ? frameHeight : 24;

这将明确检查frameHeight是否不是undefinedundefined只会将其默认为24

答案 1 :(得分:2)

frameHeight = frameHeight || 24;

^也会进行空检查。还会检查0,false,空字符串('')NaN和undefined

frameHeight = frameHeight !== undefined ? frameHeight : 24;

^只检查未定义。

答案 2 :(得分:2)

是的,存在差异,根据具体情况,差异可能很大。

frameHeight = frameHeight || 24
如果frameHeight最初为任何虚假值,例如24""0nullundefined

会将NaN分配给框架或false

鉴于:

frameHeight = frameHeight !== undefined ? frameheight : 24
如果初始值恰好为24

将仅为其分配undefined

因此,在这个特定函数中可能有意义,第二种方法允许你为0传递frameHeight来设置零高度,但是第一种方法不会,因为它会覆盖那个024

答案 3 :(得分:0)

frameHeight = frameHeight || 24;

frameHeight = 0适用于frameHeight = null

失败

frameHeight = frameHeight !== undefined ? frameHeight : 24;

frameHeight = null无效frameHeight = 0