Различные способы проверки, если число больше нуля (0) - PullRequest
0 голосов
/ 17 января 2019

Каковы различия между использованием условия , принуждения и логического преобразования при проверке типа числа для значения больше нуля (0)?

Каждый даст одинаковый вывод

var zero = 0;
var three = 3;

// condition
zero > 0 //false
three > 0 //true
null > 0 //false

// coercion
zero ? true : false; //false
three ? true : false; //true
null ? true : false; //false

// Boolean conversion
Boolean(zero); //false
Boolean(three); //true
Boolean(null); //false

В чем разница между этими операциями? (С точки зрения скорости / производительности, принципов, практики и т. Д.)

Ответы [ 3 ]

0 голосов
/ 17 января 2019

В этом случае логическое преобразование isGreaterThanZero= Boolean(zero) лучше всего с точки зрения скорости / производительности, потому что за этим нет логического условия (если ... еще).

И остальные методы преобразование условия и приведения немного медленное из-за логического условия (если ... еще).

isGreaterThanZero= zero > 0
isGreaterThanZero= zero ? true : false
0 голосов
/ 20 января 2019

Условие и принуждение , о котором вы упомянули, являются типами неявного принуждения .

Неявное принуждение относится к преобразованиям типов, которые не так удобны для чтения или не подходят для разработчиков. И из того, что я узнал, большая часть ненависти к неявному принуждению проистекает из того факта, что он не указывает точно, что именно конвертируется, и поэтому может привести к неожиданным или непреднамеренным результатам.

Булево преобразование - это явное приведение , означающее, что оно более читабельно для разработчиков и определяет, что преобразуется (в отличие от того, что подразумевается).

У меня нет четких ответов по скорости / производительности и принципам в отношении ваших вопросов, но если вы беспокоитесь о читабельности (для будущего ознакомления или другого разработчика), то Булево преобразование - это способ идти.

0 голосов
/ 17 января 2019

Как условие, так и принуждение используют булеву логику js (вы можете проверить стандарт ECMA-262 для получения более подробной информации), в то время как булев конструктор фактически сам реализует эту логику.

Поэтому скорость / производительность -> Boolean () побеждает. Принципы / практика / и т.д.. -> в зависимости от стиля кода, который вы используете

...