Me preguntaba qué significa el operador = + _ en JavaScript. Parece que hace tareas.
Ejemplo:
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
fuente
fuente

-->x= +_+ 0;Respuestas:
+intenta lanzar lo que_sea a un número._es solo un nombre de variable (no un operador), podría sera,fooetc.Ejemplo:
lanzar "1" al número puro 1.
res ahora1no"1".Además, según la página MDN sobre operadores aritméticos :
También se observa que
fuente
+_realmente significa0+_, en cuyo caso_debe lanzarse antes de sumar a 0?+'12' === 12(el resultado es un número), sino0 + '12' === '012'(el resultado es una cadena). Tenga en cuenta, sin embargo, que0 - '12' === -12.No es un operador de asignación.
_es solo un parámetro pasado a la función.En la línea siguiente,
r = +_;+delante convierte esa variable (_) en un número o valor entero y lo asigna a la variablerNO LO confunda con el
+=operadorfuente
=+en realidad son dos operadores=es asignación+y_es nombre de variable.me gusta:
Los siguientes códigos lo ayudarán a mostrar el uso de
=+convertir una cadena en int .ejemplo:
salidas 10
uso: Entonces aquí
yestá int5por lo=+contrario:
salidas 55
Donde como
_es una variable.salidas 10
Además, sería interesante saber que también podría lograr lo mismo con
~(si string es int string (float será redondeado a int) )también salidas 10
~NO es bit a bit: invierte los bits de su operando. Lo hice dos veces sin ningún cambio de magnitud.fuente
x|0para convertir doble a int; sin embargo, esto además de usar '~' tiene la penalización de restringir a números <2 ^ 32. + "2e15" no.x|0es aún más rápido+. Correcto ? buena técnica :). (2) Lo uso~solo para mostrar OP que+no es solo un signo que se puede usar ( yo mismo uso+).|mucho más rápido.No es
=+. En JavaScript,+significa cambiarlo a número.+'32'devuelve 32.+'a'devuelve NaN.Por lo tanto, puede
isNaN()verificar si se puede cambiar a número.fuente
Es astuto.
Lo importante es entender que el carácter de subrayado aquí es en realidad un nombre de variable , no un operador.
El signo más delante de eso es obtener el valor numérico positivo de subrayado, es decir, convertir efectivamente la variable de subrayado para que sea un int. Podría lograr el mismo efecto con
parseInt(), pero la conversión de signos más probablemente se use aquí porque es más concisa.Y eso solo deja el signo igual como solo una asignación de variable estándar.
Probablemente no esté escrito deliberadamente para confundir, ya que un programador Javascript experimentado generalmente reconocerá el guión bajo como una variable. Pero si no sabes que definitivamente es muy confuso. Ciertamente no lo escribiría así; No soy fanático de los nombres cortos de variables sin sentido en el mejor de los casos: si desea nombres cortos de variables en el código JS para ahorrar espacio, use un minificador; no lo escriba con variables cortas para comenzar.
fuente
_es una variable.= + _ arrojará _ en un número.
Entonces
saldría número.
fuente
Supongo que quieres decir
r = +_;? En ese caso, es la conversión del parámetro a aNumber. Digamos que_es '12 .3 ', luego+'12.3'regresa12.3. Por lo tanto, en la declaración citada+_se asigna ar.fuente
_es solo un nombre de variable, se pasa como un parámetro de funciónhexbin.radiusy+se convierte en númeroDéjame hacer un ejemplo igual a tu función.
y ejecuta esta función de ejemplo ... que genera
hexbin.radius ("1");
hexbin.radius (1);
hexbin.radius ([]);
hexbin.radius ('a');
hexbin.radius ({});
hexbin.radius (verdadero);
fuente
Asignará un nuevo valor a la variable del lado izquierdo.
fuente
+antes delb.+_es casi equivalente deparseFloat(_). Observe queparseIntse detendrá en caracteres no numéricos como el punto, mientrasparshFloatque no lo hará.EXP:
Exp:
Muy pocas diferencias:
""evalúa como a0, mientras que parseInt () se evalúa comoNaNfuente
parseInr(_)lugar deparseFloat(_)?float, porque parseInt se detendrá en un carácter no numérico, parshFloat no lo hará. EXP:parseFloat(2.4) = 2.4vsparseInt(2.4) = 2.En pocas palabras,
+_es equivalente a usar el constructor Number () .De hecho, incluso funciona en fechas:
DEMO: http://jsfiddle.net/dirtyd77/GCLjd/
También se puede encontrar más información en la sección MDN - Unary plus (+) :
fuente
En esta expresión:
_lo tanto, se mantendrá "1" si fue así originalmente, perorse convertirá en un número puro.Considere estos casos si uno quiere aplicar el + para la conversión numérica
Sin embargo, es el convertidor numérico más rápido. Apenas recomendaría uno para usarlo en exceso si lo utiliza.
parseInt/parseFloatson buenas alternativas más legibles.fuente