я наткнулся на эту строку кода в последнее время, и вы хотите, чтобы понять, что это значит и делает, так как мой Javascript-Foo не так жарко:В чем смысл + !! в javascript?
if ((+!!config.template) + (+!!config.templateUrl) !== 1) {}
от того, что я могу собрать, он проверяет, чтобы убедиться, либо параметр установлен (так как шаблон, или templateUrl должен быть установлен, но не оба или нет)
так, если config.template был установлен,
- + config.template не будет работать (шаблон не число)
- ! Config.template вернет ложь (-1)
- !! config.template будет возвращена истина (0)
- + !! config.template будет поэтому возвращать 1
если config.template был не установлен,
- ! config.template будет возвращена истина (0)
- !! config.template вернет ложь (-1)
- + !! config.template будет поэтому возвращать 0
если тогда вы должны были применить то же самое config.templateUrl, вы бы в конечном итоге с 1, если установлен, 0, если не
Таким образом, окончательный тест, чтобы увидеть, если сумма config.template и config.templateUrl равен 1 (то есть один или другой установлен)
Является ли это обоснованным аргументом?
Wow ... это было я взываю от боли. – helpermethod
Почти правильно, за исключением того, что '+ (true) === 1' и' + (false) === 0' –
Фактически указанное выше выражение эквивалентно 'if (! Config.template ===! Config.templateUrl) {} '. Это выглядит намного проще. – kreig