Всегда ли я могу использовать или — в качестве сокращения для parseFloat?

#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 функции.