The !
является logical NOT operator: Это принуждает свой аргумент в логическое значение, то это значение инвертирует (например, истинное становится ложным и ложным становится истинным). if (!value)
проверяет, имеет ли значение value
значение. Что такое «ложная» ценность? Любое значение, которое становится ложным при принуждении к логическому. То, что null
, undefined
, ""
, NaN
, 0
, и, конечно, false
.
test ? one_thing : another_thing
является conditional operator. Если тестируемое значение является правдивым, выражение после ?
оценивается, и условное выражение принимает этот результат; если нет, выражение после :
оценивается и условное выражение принимает , что результат. (Иногда вы слышите условный оператор, называемый оператором «тройной». Это правда, что это a ternary operator [оператор, который принимает три операнда], и это единственный тернарный оператор, который в настоящее время работает в JavaScript, но его собственное имя 'условный оператор' в теории, когда-нибудь другие тройные операторы могут быть добавлены к языку ...)
Так чистый результат:.
return (!value) ? '' : value.replace(/ /g, '');
является:
Coerce value
to boolean: значения Falsey становятся false
, все остальные значения становятся true
.
Invert that boolean.
Если инвертированное булево значение: true
, return ''
; в противном случае, оцените value.replace(/ /g, '')
и верните результат.
Мое предположение, что value
- это всегда строка. Если да, то короткая версия: Если value
is ""
, return ""
; в противном случае верните содержимое value
, удалив все пробелы.
Side Примечание: ()
вокруг !value
совершенно ненужными.
The '!'оператор делает только одно, действительно. – Pointy