当一个愚蠢的问题出现时,我正在阅读Three.js代码:下面的代码是否有区别?Javascript默认参数
frameHeight = frameHeight !== undefined ? frameHeight : 24;
和
frameHeight = frameHeight || 24;
(frameHeight是函数的参数)
感谢
当一个愚蠢的问题出现时,我正在阅读Three.js代码:下面的代码是否有区别?Javascript默认参数
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,假,空字符串('')NaN和undefined
frameHeight = frameHeight !== undefined ? frameHeight : 24;
^只是检查未定义。
是的,存在差异,根据具体情况,差异可能很大。
frameHeight = frameHeight || 24
将分配24
帧如果frameHeight最初ANY falsey值如""
,0
,null
,undefined
,NaN
或false
。
鉴于:
frameHeight = frameHeight !== undefined ? frameheight : 24
会如果初始值是完全undefined
只分配它24
。
所以,在这个特殊的功能可能意义,第二个方法可以让你通过0
为frameHeight
设置零高度,但第一种方法会不会因为这将覆盖0
到24
。
frameHeight = frameHeight || 24;
失败的frameHeight
= 0作品frameHeight
= NULL
frameHeight = frameHeight !== undefined ? frameHeight : 24;
失败的frameHeight
= NULL作品frameHeight
= 0
不是一个JavaScript专家,但我相信,第一只返回24如果'frameHeight'为'undefined',如果frameHeight具有任何“falsey”值,如'null',''''等等,第二个将返回24。 – sellmeadog 2012-08-15 17:32:47
它们不同,但是if(frameHeight = ==未定义)frameHeigh t = 24;'IS是等价的,但它更具可读性并且性能更好,因为它的值只会在需要时才会改变 – ajax333221 2012-08-15 17:48:57