Мне было интересно, что означает оператор = + _ в JavaScript. Похоже, что это делает назначения.
Пример:
hexbin.radius = function(_) {
if (!arguments.length)
return r;
r = +_;
dx = r * 2 * Math.sin(Math.PI / 3);
dy = r * 1.5;
return hexbin;
};
javascript
operators
Димитрий
источник
источник
-->
x= +_+ 0;
Ответы:
+
пытается бросить все, что_
есть на число._
только имя переменной (не оператор), может бытьa
иfoo
т. д.Пример:
приведи «1» к чистому номеру 1.
r
сейчас1
нет"1"
.Кроме того, согласно странице MDN об арифметических операторах :
Также отмечено, что
источник
+_
действительно означает0+_
, в каком случае_
должно быть приведение перед добавлением к 0?+'12' === 12
(результат - число), но0 + '12' === '012'
(результат - строка). Обратите внимание, однако, что0 - '12' === -12
.Это не оператор присваивания.
_
это просто параметр, передаваемый в функцию.На следующей строке
r = +_;
+
infront приводит эту переменную (_
) к числовому или целочисленному значению и присваивает ее переменнойr
Не путайте это с
+=
операторомисточник
=+
на самом деле два оператора=
это присваивание и+
и_
имя переменной.лайк:
Мои следующие коды помогут вам показать использование
=+
для преобразования строки в int .пример:
выходы 10
использование: так вот
y
int5
из-за=+
:
выходы 55
Где как
_
переменная.выходы 10
Кроме того, было бы интересно узнать, что вы также можете достичь того же с помощью
~
(если строка является int строка (float будет раунд из int) )также выводит 10
~
поразрядно НЕ: инвертирует биты своего операнда. Я сделал два раза без изменения величины.источник
x|0
для преобразования double в int; однако это так же как использование '~' имеет ограничение ограничения числами <2 ^ 32. + "2е15" нет.x|0
что даже быстрее, чем тогда+
. Правильно ? хорошая техника :). (2) Я использую~
только для того, чтобы показать OP, который+
можно использовать не только как знак ( я сам использую+
).|
намного быстрее.Это не так
=+
. В JavaScript это+
означает изменить его на число.+'32'
возвращает 32+'a'
возвращает NaN.Таким образом, вы можете использовать,
isNaN()
чтобы проверить, может ли он быть изменен на номер.источник
Это подлый.
Важно понимать, что символ подчеркивания здесь - это имя переменной , а не оператор.
Знак плюс перед этим получает положительное числовое значение подчеркивания, то есть фактически преобразует переменную подчеркивания в int. Вы можете добиться того же эффекта с помощью
parseInt()
, но здесь, скорее всего, используется приведение знака плюс, потому что оно более лаконично.И это просто оставляет знак равенства как стандартное присвоение переменной.
Вероятно, это не преднамеренно написано, чтобы запутать, поскольку опытный программист Javascript обычно распознает подчеркивание как переменную. Но если вы не знаете, что это определенно очень запутанно. Я бы точно так не написал; Я не фанат коротких бессмысленных имен переменных в лучшие времена - если вы хотите, чтобы короткие имена переменных в коде JS экономили место, используйте минификатор; не пишите это с короткими переменными для начала.
источник
_
это переменная.= + _ приведёт _ к числу.
Так
выдаст номер.
источник
Я полагаю, вы имеете в виду
r = +_;
? В этом случае это преобразование параметра вNumber
. Скажем «_
12 .3», затем+'12.3'
возвращается12.3
. Таким образом, в цитируемом заявлении+_
присваиваетсяr
.источник
_
это просто имя переменной, переданное в качестве параметра функцииhexbin.radius
и+
приведенное к числуПозвольте мне привести пример, аналогичный вашей функции.
и запустить этот пример функции .. который выводит
hexbin.radius ("1");
hexbin.radius (1);
hexbin.radius ([]);
hexbin.radius ('a');
hexbin.radius ({});
hexbin.radius (правда);
источник
Присвоит новое значение левой переменной число.
источник
+
до тогоb
.+_
почти эквивалентно изparseFloat(_)
. Заметьте, чтоparseInt
остановится на нечисловом символе, таком как точка, тогда какparshFloat
не будет.EXP:
Опыт:
Очень мало отличий:
""
оценивается как a0
, а parseInt () - какNaN
источник
parseInr(_)
вместоparseFloat(_)
?float
, потому что parseInt остановится на не числовом символе, parshFloat не будет. EXP:parseFloat(2.4) = 2.4
противparseInt(2.4) = 2
.Проще говоря,
+_
эквивалентно использованию Number () .На самом деле, это даже работает на даты:
ДЕМО: http://jsfiddle.net/dirtyd77/GCLjd/
Дополнительную информацию также можно найти в разделе MDN - Унарный плюс (+) :
источник
В этом выражении:
_
что останется «1», если это было так изначально, ноr
станет чистым числом.Рассмотрим эти случаи, если кто-то хочет применить + для числового преобразования
Тем не менее, это самый быстрый числовой преобразователь, который я бы вряд ли порекомендовал использовать, если он вообще используется.
parseInt/parseFloat
хороши более читаемые альтернативы.источник