1. Tipo no numérico a valor numérico
Al usar Number() Conversión:
Al usar parseInt() para convertir:
var num1 = parseInt ("10", 2); // 2 parse var num2 = parseInt ("10", 8); // 8 parse var num3 = parseInt ("10", 10); // 10 parse var num4 = parseInt ("10", 16); // 16 analizar en hexadecimal Al usar la conversión parseFloat() :
La primera diferencia entre Parsefloat y Parseint es que encuentra un carácter numérico de punto flotante no válido al analizar una cuerda, que es mucho más que Parseint.
Devuelve 0 al analizar los valores hexadecimales
var num = parsefloat ("0xa"); // 0var num = parseInt ("0xa"); // 10La función Parsefloat no tiene un segundo parámetro que especifique la cardinalidad, por lo que solo se analizan los valores decimales.
Si la cadena es un entero, devuelve un entero en lugar de un número de punto flotante
var num = parseFloat("2.125e7"); //31250000
2. Use toString () para salir de valores en diferentes dígitos
Esta barra se aplica a enteros, podemos usar toString () para devolver enteros en cualquier formato binario.
var num = 10; alerta (num.ToString ()); //"10"alert(num.ToString(9)); //"11"alert(num.ToString(16)); //"a"
3. Presta atención a Nan e Infinity cuando los operadores de bits
Al usar operadores de bits para NAN e Infinity, ambos valores se tratan como 0. Si se aplica un operador de bits a un valor no numérico, el valor se convierte en un valor numérico usando la función número ().
Otra cosa a tener en cuenta es que el cambio derecho sin firmar de los números negativos, y el cambio derecho sin firmar es llenar el espacio vacío con 0, a diferencia del cambio derecho firmado con bits de signo, por lo que el cambio derecho sin firmar y el cambio derecho firmado de los números positivos son los mismos, pero el número negativo es diferente. La operación de desplazamiento derecho sin firmar tratará el código binario negativo como el código binario positivo, y el número negativo se representa en el formulario del complemento, lo que causará que el resultado del cambio derecho sin firmar sea muy diferente.
var OldValue = -64; var newValue = OldValue >>> 5
4. Operaciones numéricas especiales
Para las operaciones numéricas, si hay un operando que es Nan, el resultado es Nan.
Use una operación de adición o resta de una en uno (+,-, más o signo negativo) para valores no numéricos. Si el valor no se puede convertir a un valor numérico (convertido usando el método número ()), se devuelve NAN.
var s1 = "01", s2 = "1.1", s3 = "z", b = false, o = {valuef: function () {return -1;}}; s1 = +s1; // 1 + cambio a -: -1s2 = + s2; //1.1 -1.1S3 = +S3; // nan nanb = +b; // 0 0o = -o; //-1 1Multiplicar el infinito y 0 es igual a Nan, y multiplicar el no 0 es infinito e infinidad, dependiendo del signo del multiplicador. Multiplicar el infinito y el infinito es igual a Infinity.
var num1 = infinity, num2 = 0, num3 = -2, num4 = -infinity; alerta (num1 * num2); // nanalert (num1 * num3); //-InfinityAlt (num1 * num4); //-Infinidad
Zero se divide en cero y es NAN, y los números no cero divididos por cero son infinitos o infinidad. Infinito dividido por el infinito como nan
Para la operación de Modulo, la siguiente ecuación es válida:
Infinito%2 = nan; 2%-infinity = 2; 0%infinito = 0; // Mientras el divisor sea 0, el divisor no es nan, el resultado es 0infinity%0 = nan; // El divisor puede ser cualquier número, y mientras el divisor sea 0, el resultado es Naninfinity%infinity = nan
Operación de adición: si ambos operandos son cadenas, + se convierte en una concatenación de cadena. Si uno es una cadena y el otro es un valor numérico, convierta el valor numérico en una cadena y luego concatene la cadena. Si un operando es un objeto, el valor booleano primero llamará a su valor de valor. Si no es nada, llame al método ToString. Luego, según el tipo de valor de retorno, determine si el signo + debe estar conectado a la cadena o agregado.
Infinity + -infinity = nan; var p = {valueOf: function () {return -1; }}; var num = 1; var resultado = num +p; alerta (resultado); // 0 Agregar var p = {valueOf: function () {return "no un num"; }}; var num = 1; var resultado = num +p; alerta (resultado); // 1 not a una numOperación de sustracción: la operación de sustracción es muy similar a la operación adicional, y el procesamiento de objetos es el mismo, por lo que ya no lo explicaré.
Infinity - infinity = nan; -infinity - -infinity = nan;
5. Uso de operadores relacionales
Los operadores relacionales son menores que (<), mayores que (>), menores o iguales a (<=) y mayores o igual a (> =)
Mientras haya un valor, se realizará la comparación numérica, y la otra no es un valor numérico, y se convertirá a un valor numérico. Use Value de primero para el objeto y luego use ToString. De hecho, no importa qué operación realice el objeto, esto es cierto. Si hay valor de valor, ValueOF se usa para devolver el valor, de lo contrario, la toString se usa para devolver el valor.
Ambas son cadenas, luego compare el valor de codificación de caracteres de la cadena (valor ASCII)
Con respecto al primero, debe tenerse en cuenta que cuando una cadena es un valor numérico, cuando una cadena no se puede convertir en un valor numérico, la siguiente situación ocurrirá como Nan.
resultado var = "a" <3; // falso A convierte un resultado de nanvar = "a"> = 3; // falso cualquier número en comparación con Nan es falso
6. == y ===
En JavaScript, si los dos lados de la ecuación tienen diferentes tipos, o solo se incluye un objeto, entonces la comparación se dividirá en dos situaciones, y la comparación después de la transformación se compara directamente con la transformación de NO. == es convertir primero y comparar, === es compararse directamente sin convertir. Para ===, devuelve falso siempre que los tipos no sean iguales. Para ==, se divide en las siguientes situaciones:
Verdadero se convertirá a 1, False se convertirá a 0.
Comparación de cadenas con valores numéricos, las cadenas se convierten en valores numéricos.
Si solo hay un objeto en ambos lados de la ecuación, este objeto llamará al valor para obtener el tipo básico, como llamar al método de tostración sin el método ValueOf. Si ambos lados son objetos, no se realizará transformación.
var p = {"nombre": "a"}; var q = {"nombre": "a"} var o = p; alert (q == p); // falsas las direcciones de los objetos que apuntan por P y Q son diferentes, aunque el contenido del objeto es la misma alerta (o == P); //verdaderoAquí están las comparaciones especiales
null == Undefined // trUenan! = nan // trUenan == nan // falso "nan" == nan // falseuDefined == 0 // falsenull == 0 // falso
7. Declaración de For-In
El orden de salida de las declaraciones para In-In es impredecible, y el pedido puede variar según el navegador.
Cuando la variable para iterar no es nula o indefinida, el error ya no se arrojará bajo ECMAScript 5, pero el cuerpo del bucle no se ejecutará. Si desea una compatibilidad de avance, juzgará que no es nulo o indefinido antes del circuito.
8. Declaración SWETHC
Switch puede usar cualquier tipo de datos.
El valor de un caso puede ser una constante, una variable y una expresión.
La instrucción Switch utiliza el operador de comparación congruente (===) al comparar valores.
var num = 25; switch (true) {case num <0: alert ("menos 0"); romper; caso num> = 0: alerta ("más de 0"); romper; predeterminado: alerta ("error");}9 Uso de funciones
Si no hay una declaración de retorno en la función o retorno no tiene ningún valor de retorno, la función devolverá indefinida.
La definición de una función no es consistente con los parámetros de la función al llamarla. En otras palabras, los dos parámetros (parámetros formales y parámetros reales) no tienen conexión. Las variables proporcionadas al definir una función son solo más convenientes de usar. Incluso si no están definidos, los parámetros pasados a la función se pueden obtener (a través de los argumentos []).
function HowManyargs () {alert (argumentos.length);} HowManyargs ("A"); // 1HowManyArgs ("A", "B"); // 2HowManyArgs (); // 0La relación entre los parámetros y argumentos formales [] es la siguiente, prestando atención a la diferencia entre el modo estricto y el modo no riguroso.
función HowManyargs (SS) {argumentos [0] = "prueba"; argumentos [1] = "test2" alerta (argumentos [0]); // ALERTA DE PRUEBA (Argumentos [1]); // alerta test2 (ss); // prueba} HowManyargs ("A"); función HowManyargs (ss) {"use argumentos estrictos" [0] = "prueba"; argumentos [1] = "test2" alerta (argumentos [0]); // testalert (argumentos [1]); // test2Alert (SS); // a} HowManyargs ("A");10. Uso de parámetros de función
Al definir una función, escribiremos los parámetros utilizados en los paréntesis de la función, pero será lo suficientemente inflexible cuando haya múltiples parámetros opcionales. En este momento, podemos usar objetos para encapsular múltiples parámetros opcionales.
función displayInfo (args) {var output = ""; if (typeof args.name == "string") {output + = "name:" + args.name + "/n"; } if (typeof args.age == "número") {output + = "edad:" args.age + "/n"; } alerta (salida); } displayInfo ({nombre: "nicholas", edad: 29}); DisplayInfo ({nombre: "Greg"});