#javascript
#javascript
Вопрос:
!!
всегда отлично работает для преобразования типов String, undefined
, Object и Number в логический тип в JavaScript:
!!0 // false
!!1 // true
!!10 // true
!!"" // true
!!"any" // true
!!undefined // false
!!null // false
!!NaN // false
!!{} // true
Кажется, использование !!
абсолютно безопасно. Я видел людей, использующих это для преобразования переменных.
Но я не уверен в
или --
для преобразования строковых типов в числовые типы. В этих примерах использование
для преобразования выглядит безопасным:
var ten = "10";
ten // 10
var nineHalf = "9.5";
nineHalf // 9.5
var n = "-10.06";
n // -10.06
Есть ли какой-либо случай,
когда / --
не работает как parseFloat
?
Ответ №1:
Просто используйте один
(унарный оператор плюс). Это обычная практика, как !!
и для логических значений.
( "10.06")
Версия заставляет меня бояться, что операторы увеличения делают злые трюки, когда я не смотрю.
Редактировать: И, конечно, оператор postIncrement даже не работает со строковыми литералами.
"10.06" //syntax error
Комментарии:
1. @Mohsen: Да, но у вас все еще есть проблема с тем, что впоследствии уничтожает переменную.
Ответ №2:
Единственное, что имеет побочный эффект добавления единицы к исходной переменной. Эффект
var n = "-10.06";
n
например, это то же самое, что
var n = "-10.06";
Number(n)
По сути, любой математический оператор, применяемый к строке, сначала преобразует ее в число с помощью Number
функции.