Eu queria saber o que o operador = + _ significa em JavaScript. Parece que faz atribuições.
Exemplo:
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
Dimitry
fonte
fonte
-->
x= +_+ 0;
Respostas:
+
tenta lançar o que quer que_
seja para um número._
é apenas um nome variável (não um operador), pode sera
,foo
etc.Exemplo:
converter "1" para o número 1 puro.
r
é agora1
, não"1"
.Além disso, de acordo com a página MDN em Operadores Aritméticos :
Note-se também que
fonte
+_
realmente significa0+_
? Nesse caso,_
deve ser convertido antes de adicionar a 0?+'12' === 12
(result é um número), mas0 + '12' === '012'
(result é uma string). Note, no entanto, isso0 - '12' === -12
.Não é um operador de atribuição.
_
é apenas um parâmetro passado para a funçãoNa próxima linha, na
r = +_;
+
frente, lança essa variável (_
) para um número ou valor inteiro e a atribui à variávelr
Não confundir com
+=
operadorfonte
=+
são na verdade dois operadores=
é atribuição e+
e_
é o nome da variável.gostar:
Meus códigos a seguir o ajudarão a mostrar o uso de
=+
para converter uma string em int .exemplo:
saídas 10
use: Então aqui
y
está int5
por causa do=+
contrário:
saídas 55
Onde como
_
é uma variável.saídas 10
Além disso, seria interessante saber que você também pode obter a mesma coisa com
~
(se string for int string (float será arredondado para int) )também gera 10
~
é bit a bit NOT: inverte os bits do seu operando. Eu fiz duas vezes sem nenhuma mudança de magnitude.fonte
x|0
para converter double em int; no entanto, assim como o uso de '~' tem a penalidade de restringir a números <2 ^ 32. + "2e15" não.x|0
seja ainda mais rápido+
. Correto ? boa técnica :). (2) Eu uso~
apenas para mostrar OP que+
não é apenas um sinal que pode ser usado ( eu mesmo uso+
).|
muito mais rápido.Não é
=+
. Em JavaScript,+
significa alterá-lo para número.+'32'
retorna 32.+'a'
retorna NaN.Portanto, você pode
isNaN()
verificar se pode ser alterado para número.fonte
É um sorrateiro.
O importante é entender que o caractere sublinhado aqui é na verdade um nome de variável , não um operador.
O sinal de mais na frente disso está obtendo o valor numérico positivo do sublinhado - ou seja, convertendo efetivamente a variável de sublinhado para int. Você pode obter o mesmo efeito com
parseInt()
, mas a conversão do sinal de adição provavelmente é usada aqui porque é mais concisa.E isso apenas deixa o sinal de igual como apenas uma atribuição de variável padrão.
Provavelmente não foi deliberadamente escrito para confundir, pois um programador Javascript experiente geralmente reconhece o sublinhado como uma variável. Mas se você não sabe que é definitivamente muito confuso. Eu certamente não escreveria assim; Não sou fã de nomes curtos de variáveis sem sentido na melhor das hipóteses - Se você quiser que nomes curtos de variáveis no código JS economizem espaço, use um minificador; não escreva com variáveis curtas para começar.
fonte
_
é uma variável.= + _ converterá _ em um número.
assim
número de saída.
fonte
Suponho que você quis dizer
r = +_;
? Nesse caso, é a conversão do parâmetro para aNumber
. Diga_
é '12 .3 'e depois+'12.3'
retorna12.3
. Portanto, na declaração citada+_
é atribuída ar
.fonte
_
é apenas um nome de variável, passado como parâmetro de funçãohexbin.radius
e+
convertido em númeroDeixe-me fazer um exemplo igual à sua função.
e execute esta função de exemplo .. que gera
hexbin.radius ("1");
hexbin.radius (1);
hexbin.radius ([]);
hexbin.radius ('a');
hexbin.radius ({});
hexbin.radius (true);
fonte
Ele atribuirá um novo valor à variável do lado esquerdo de um número.
fonte
+
antes dob
.+_
é quase equivalente deparseFloat(_)
. Observe queparseInt
irá parar em caracteres não numéricos, como ponto, enquantoparshFloat
que não irá.EXP:
Exp:
Muito poucas diferenças:
""
avaliada como a0
, enquanto parseInt () é avaliada comoNaN
fonte
parseInr(_)
vez deparseFloat(_)
?float
, porque parseInt irá parar com um caracter não numérico, parshFloat não. EXP:parseFloat(2.4) = 2.4
vsparseInt(2.4) = 2
.Simplificando,
+_
é equivalente a usar o construtor Number () .De fato, ele ainda funciona em datas:
DEMO: http://jsfiddle.net/dirtyd77/GCLjd/
Mais informações também podem ser encontradas na seção MDN - Unary plus (+) :
fonte
Nesta expressão:
_
, permanecerá "1" se fosse originalmente, mas or
número se tornará puro.Considere estes casos se deseja aplicar o + para conversão numérica
No entanto, é o conversor numérico mais rápido que eu dificilmente recomendaria um uso excessivo, se for o caso.
parseInt/parseFloat
são boas alternativas mais legíveis.fonte