當一個愚蠢的問題出現時,我正在閱讀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