Introducción
Si las declaraciones deben ser declaraciones que los programadores usan con más frecuencia, y a menudo necesitan hacer si los juicios. Si las declaraciones generalmente usan signos dobles para determinar si los dos elementos antes y después son consistentes. Si son consistentes, entonces el retorno es verdadero y luego ejecute la siguiente declaración. De lo contrario, ejecute otras declaraciones. La conversión de tipo implícita mencionada en este artículo se refiere a la conversión causada por ==. Para dar un ejemplo simple, un signo doble igual no es un signo igual total, un signo igual total es "===" tres signos iguales, y la declaración "1" == 1, entonces, en general, la cadena anterior "1" se convierte en un número 1 y luego se compara. ¡A través de este ejemplo, debe comprender qué es la conversión de tipo implícito!
Pasos de conversión de tipo implícito
1. Primero, verifique si hay NAN antes y después del signo doble igual. Si NAN existe, todos regresan falsos.
2. Veamos si hay booleanos antes y después del signo doble igual. Si hay booleano, convierta el booleano en un número. (Falso es 0, verdadero es 1)
3. Luego verifique si hay cadenas antes y después del signo doble igual. Hay tres situaciones:
1. La otra parte es un objeto, y el objeto se convierte usando toString () o valueOf ();
2. La otra parte es un número, y la cadena se convierte en un número; (Se ha dado un ejemplo antes)
3. La otra parte es una cadena, compare directamente;
4. Otros regresan falsos
4. Si es un número, la otra parte es un objeto. El objeto toma valueOf () o toString () para comparación, y todos los demás objetos devolverán falsos.
5. NULL, indefinido no realizará la conversión de tipo, pero son iguales
La orden de conversión anterior debe tenerse en cuenta. Los tipos de preguntas a menudo ocurren durante las entrevistas.
Conversión numérica del método .ToString () y .ValueOf ()
Por lo general, creemos que convertir un objeto en una cadena requiere llamar al método ToString (), y convertirlo en un número requiere llamar al método Valuef (), pero no es tan simple cuando realmente se aplica. Consulte el siguiente ejemplo del código:
var obj = {WebName: "Blog front-end de Haorooms", url: "www.vevb.com"} console.log (obj.ToString ()); // [Objeto objeto]Del mismo modo, veamos nuevamente el método valueOf ():
var arr = [1, 2, 3]; console.log (arr.ValueOf ()); // [1, 2, 3]
Como se puede ver en el código anterior, el método valueOf () no convierte el objeto en un número que refleja el objeto. En su lugar, usamos toString ()
var arr = [1, 2, 3]; console.log (arr.ToString ()); // 1,2,3
Nota: Muchos amigos creen que al convertir a una cadena, primero debe llamar al método toString (). De hecho, esta es una comprensión incorrecta. Deberíamos entender de esta manera. Llamar al método toString () puede convertirse a una cadena, pero no necesariamente significa que convertir una cadena es llamar primero al método toString ().
Veamos el siguiente código:
var arr = {}; arr.ValueOf = function () {return 1; } arr.ToString = function () {return 2; } console.log (arr == 1); // trueVar arr = {}; arr.valueOf = function () {return []; } arr.ToString = function () {return 1; } console.log (arr == 1); // VerdaderoPodemos ver en el código anterior que la primera llamada a valuef () para la conversión. Si valueOf () no es un valor numérico, ¡se solicitará una toString para la conversión!
var arr = {}; arr.valueOf = function () {return "1"; } arr.ToString = function () {return "2"; } console.log (arr == "1"); // VerdaderoSi "1" es una cadena, entonces lo primero que llama valuef ().
var arr = [2]; console.log (arr + "1"); // 21
En el ejemplo anterior, se llama ToString (); porque arr.ToString () es seguido por 2.
El proceso de conversión es así. Primero, ARR llamará primero el método ValueOf (), pero este método del número es simplemente heredado y no reescrito (por supuesto, esta reescritura no es implementada por nosotros). El valor de retorno es el objeto de matriz en sí, no un tipo de valor, por lo que llamamos al método toString (), logrando así el propósito de convertir a una cadena.
resumen
La mayoría de los objetos se convierten implícitamente en tipos de valor son el primer intento de llamar al método ValueOf (). Sin embargo, el objeto de fecha es una excepción. Los métodos valueOf () y toString () de este objeto se han reescrito cuidadosamente. El valor predeterminado es llamar al método ToString (), como usar el operador +. Si se encuentra en otros entornos de operación aritmética, se llamará al método ValueOf () en su lugar.
var fecha = nueva fecha (); console.log (fecha + "1"); // Sol 17 de abril de 2014 17:54:48 GMT + 0800 (CST) 1Console.log (fecha + 1); // 14608888885556console.log (fecha * 1); // 14608888885555557