Javascript 默认参数



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

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

frameHeight = frameHeight || 24;

(frameHeight是函数的一个参数)

谢谢

是的,它们是不同的。

frameHeight = frameHeight || 24;

这会强制frameHeight为布尔值。如果它是 0''falsenullundefinedNaN 它将是假的,frameHeight将默认为 24。

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

这将显式检查frameHeight是否未undefined,并且只有对于undefined,它才会默认为24

frameHeight = frameHeight || 24;

^ 也会做一个空检查。还将检查 0、假、空字符串 ('') NaN 和未定义

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

^ 只会检查未定义。

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

frameHeight = frameHeight || 24

如果 frameHeight 最初是任何假值,例如 ""0nullundefinedNaNfalse,则将24分配给帧。

而:

frameHeight = frameHeight !== undefined ? frameheight : 24

只有在初始值正好undefined24才会分配它。

因此,在此

特定函数中可能具有重要意义,第二种方法将允许您传递0,以便frameHeight设置零高度,但第一种方法不会,因为它将覆盖该024

frameHeight = frameHeight || 24;

失败frameHeight = 0 适用于 frameHeight = 空

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

失败frameHeight = 空工作frameHeight = 0

最新更新