我碰到這行代碼來最近,並希望瞭解這意味着什麼,的確,作爲我的JavaScript的foo是不是很燙:+的意思是什麼!在JavaScript?
if ((+!!config.template) + (+!!config.templateUrl) !== 1) {}
從我所知,這是檢查是否任一選項設置(因此無論是模板,或templateUrl必須設置,而不是兩個或無)
所以,如果config.template設置,
- + config.template是行不通的(模板不一個號碼)
- !config.template將返回false(-1)
- !config.template將返回true(0)
- + !! config.template因此將返回1
如果config.template是沒有設置,
- !config.template將返回true(0)
- !config.template將返回false(-1)
- + !! config.template因此將回歸0
如果當時你是一樣的,適用config.templateUrl如果設置,則爲0
所以最終的測試是要看到,你最終會得到1如果config.template的總和和config.templateUrl是1(即一個或另一個被設置)
這是否有效的推理?
哇...這有我痛苦地哭泣。 – helpermethod
幾乎正確,除了'+(true)=== 1'和'+(false)=== 0' –
其實上面的表達式等價於'if(!config.template ===!config.templateUrl ){}'。這看起來更簡單。 – kreig