当一个愚蠢的问题出现时,我正在阅读 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 。NaN
false
然而:
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