当一个愚蠢的问题出现时,我正在阅读 Three.js 代码:下面的代码之间有什么区别吗?
frameHeight = frameHeight !== undefined ? frameHeight : 24;
和
frameHeight = frameHeight || 24;
(frameHeight是函数的参数)
谢谢
当一个愚蠢的问题出现时,我正在阅读 Three.js 代码:下面的代码之间有什么区别吗?
frameHeight = frameHeight !== undefined ? frameHeight : 24;
和
frameHeight = frameHeight || 24;
(frameHeight是函数的参数)
谢谢
是的,它们是不同的。
frameHeight = frameHeight || 24;
这将强制frameHeight转换为布尔值。如果是0, '', false, null, undefined, 否则NaN为假,frameHeight默认为 24。
frameHeight = frameHeight !== undefined ? frameHeight : 24;
这将显式检查是否frameHeight不是undefined并且仅用于undefined将其默认为24.
frameHeight = frameHeight || 24;
^ 也会进行空值检查。还将检查 0、false、空字符串 ('') NaN 和未定义
frameHeight = frameHeight !== undefined ? frameHeight : 24;
^ 只会检查未定义。
是的,存在差异,根据具体情况,差异可能很大。
frameHeight = frameHeight || 24
24如果 frameHeight 最初是任何虚假值,例如""、0、null、或undefined,则将分配给 frame 。NaNfalse
然而:
frameHeight = frameHeight !== undefined ? frameheight : 24
24只有当初始值正好是时才会分配它undefined。
因此,在这个特定函数中可能具有重要意义的是,第二种方法将允许您通过0设置frameHeight零高度,但第一种方法不会,因为它将覆盖它0到24.
frameHeight = frameHeight || 24;
失败为frameHeight= 0 适用于frameHeight= null
frameHeight = frameHeight !== undefined ? frameHeight : 24;
失败 for frameHeight= null 适用于frameHeight= 0