我碰到这行代码来最近,并希望了解这意味着什么,的确,作为我的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