una tablas tabla recorrer obtener filas editar dinamicas datos create con agregar javascript operators

tablas - ¿Qué significa=+_en JavaScript?



recorrer tabla javascript (12)

= + _ lanzará _ en un número.

Asi que

var _ = "1", r = +_; console.log(typeof r)

sería el número de salida.

Me preguntaba qué significa el operador = + _ en JavaScript. Parece que hace asignaciones.

Ejemplo:

hexbin.radius = function(_) { if (!arguments.length) return r; r = +_; dx = r * 2 * Math.sin(Math.PI / 3); dy = r * 1.5; return hexbin; };


Asignará un nuevo valor a la variable del lado izquierdo un número.

var a=10; var b="asg"; var c=+a;//return 10 var d=-a;//return -10 var f="10"; var e=+b; var g=-f; console.log(e);//NAN console.log(g);//-10


En esta expresión:

r = +_;

  • ''+'' actúa aquí como un operador unario que intenta convertir el valor del operando correcto. No convierte el operando sino el valor evaluado. Entonces _ se mantendrá "1" si fue tan original pero la r se convertirá en número puro.

Considere estos casos si uno quiere aplicar el + para la conversión numérica

+"-0" // 0, not -0 +"1" //1 +"-1" // -1 +"" // 0, in JS "" is converted to 0 +null // 0, in JS null is converted to 0 +undefined // NaN +"yack!" // NaN +"NaN" //NaN +"3.14" // 3.14 var _ = "1"; +_;_ // "1" var _ = "1"; +_;!!_ //true var _ = "0"; +_;!!_ //true var _ = null; +_;!!_ //false

Sin embargo, es el convertidor numérico más rápido que difícilmente recomendaría uno para sobreutilizarlo si lo utilizo. parseInt/parseFloat son buenas alternativas más legibles.


En pocas palabras, +_ es equivalente a usar el constructor Number() .

De hecho, incluso funciona en fechas:

var d = new Date(''03/27/2014''); console.log(Number(d)) // returns 1395903600000 console.log(+d) // returns 1395903600000

DEMO: http://jsfiddle.net/dirtyd77/GCLjd/

También puede encontrar más información en MDN - Unary plus (+) section :

El operador unario plus precede a su operando y evalúa su operando, pero intenta convertirlo en un número, si no lo está ya. Aunque la negación unaria (-) también puede convertir los no números, unary plus es la forma más rápida y preferida de convertir algo en un número, porque no realiza ninguna otra operación en el número. Puede convertir representaciones de cadenas de enteros y flotantes, así como los valores no de cadena verdadero, falso y nulo. Se admiten enteros en formato decimal y hexadecimal ("0x" -prefixed). Los números negativos son compatibles (aunque no para hex). Si no puede analizar un valor particular, se evaluará a NaN.


Es una astuta

Lo importante a entender es que el carácter de subrayado aquí es en realidad un nombre variable , no un operador.

El signo más que está delante de eso es obtener el valor numérico positivo del guión bajo, es decir, convertir la variable de guión bajo en un int. Podría lograr el mismo efecto con parseInt() , pero es probable que se use aquí la conversión de signos positivos porque es más concisa.

Y eso solo deja el signo igual como una asignación de variable estándar.

Probablemente no esté escrito deliberadamente para confundirlo, ya que un programador de Javascript experimentado generalmente reconocerá el subrayado como una variable. Pero si no sabes que es definitivamente muy confuso. Ciertamente no lo escribiría así; No soy un fanático de los nombres cortos de las 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 escribas con variables cortas para empezar.


No es =+ . En JavaScript, + significa cambiarlo en número.

+''32'' devuelve 32.

+''a'' devuelve NaN.

Por lo tanto, puede usar isNaN() para verificar si se puede cambiar a número.


No es un operador de asignación.

  • _ es solo un parámetro pasado a la función.

    hexbin.radius = function(_) { // ^ It is passed here // ... };

  • En la siguiente línea r = +_; + enfrente convierte esa variable ( _ ) a un número o valor entero y la asigna a la variable r

NO LO CONFUSE CON += operador


Supongo que te refieres a r = +_; ? En ese caso, es la conversión del parámetro a un Number . Diga _ es ''12 .3 '', luego +''12.3'' devuelve 12.3 . Así que en el enunciado citado +_ se asigna a r .


+_ es casi equivalente a parseFloat(_) . Observe que parseInt se detendrá en un carácter no numérico como un punto, mientras que parshFloat no lo hará.

EXP:

parseFloat(2.4) = 2.4 vs parseInt(2.4) = 2 vs +"2.4" = 2.4

Exp:

var _ = "3"; _ = +_; console.log(_); // will show an integer 3

Muy pocas diferencias:


=+ son en realidad dos operadores = es asignación y + y _ es el nombre de la variable.

me gusta:

i = + 5; or j = + i; or i = + _;

Mis siguientes códigos te ayudarán a mostrar el uso de =+ para convertir una cadena en int .
ejemplo:

y = +''5'' x = y +5 alert(x);

salidas 10

uso: Entonces aquí y es int 5 debido a =+
de otra manera:

y = ''5'' x = y +5 alert(x);

salidas 55

Donde como _ es una variable.

_ = + ''5'' x = _ + 5 alert(x)

salidas 10

Además, sería interesante saber que también podría lograr lo mismo con ~ (si string es int string (float será round of to int) )

y = ~~''5'' // notice used two time ~ x = y + 5 alert(x);

también salidas 10

~ es bit a bit NO: invierte los bits de su operando. Lo hice dos veces sin ningún cambio en la magnitud.


_ es solo un nombre de variable, pasado como parámetro de la función hexbin.radius , y + lo convierte en número

Déjame hacer un ejemplo igual a tu función.

var hexbin = {},r ; hexbin.radius = function(_) { if (!arguments.length) return r; console.log( _ , typeof _ ) r = +_; console.log( r , typeof r , isNaN(r) ); }

y ejecute esta función de ejemplo ... qué salidas

hexbin.radius ("1");

1 string 1 number false

hexbin.radius (1);

1 number 1 number false

hexbin.radius ([]);

[] object 0 number false

hexbin.radius (''a'');

a string NaN number true

hexbin.radius ({});

Object {} object NaN number true

hexbin.radius (verdadero);

true boolean 1 number false


r = +_;

  • + intenta lanzar lo que sea _ a un número.
  • _ es solo un nombre de variable (no un operador), podría ser a , foo etc.

Ejemplo:

+"1"

Reparto "1" al número puro 1.

var _ = "1"; var r = +_;

r es ahora 1 , no "1" .

Además, de acuerdo con la página de MDN sobre operadores aritméticos :

El operador unario plus precede a su operando y evalúa a su operando, pero intenta convertirlo en un número, si no lo está ya . [...] Puede convertir representaciones de cadenas de enteros y flotantes, así como los valores no de cadena true , false y null . Se admiten enteros en formato decimal y hexadecimal ( "0x" -prefixed). Los números negativos son compatibles (aunque no para hex). Si no puede analizar un valor particular, se evaluará a NaN .

También se observa que

Unary Plus es la forma más rápida y preferida de convertir algo en un número.