Primero, hablemos de la diferencia entre nulo y indefinido:
Ejecutar typeOf en variables declaradas pero no inicializadas y no declaradas, ambas devuelven "indefinidas".
NULL significa un puntero de objeto vacío, y la operación de typeOf devolverá "objeto".
En general, el valor de una variable no se establece explícitamente en indefinido, sino nulo, por el contrario, para la variable que está a punto de guardar el objeto, la variable debe permitirse explícitamente guardar el valor nulo.
var bj; alerta (bj); // "Undefined" bj = null; alert (typeof bj); // alerta "objeto" (bj == null); // trueBj = {}; alerta (bj == null); //FALSOEl hermano mayor Deng me dio las siguientes dos funciones, gracias.
/** Detectar si el objeto es un objeto vacío (sin propiedades legibles). * El método detecta tanto las propiedades del objeto en sí como las propiedades heredadas del prototipo (por lo que no ha hecho a HaswnProperty). */function isEtimty (obj) {for (nombre var en obj) {return false;} return true;};¿El objeto vacío se menciona aquí {} o nulo? Escribí un caso de prueba.
var a = {}; a.name = 'realwall'; console.log (isEtimty (a)); //falseconsole.log (isEmpty ({})); //trueconsole.log(isEmpty(null)); // Verdadero // Tenga en cuenta que no hay un error de sintaxis cuando el parámetro es nulo, es decir, aunque no puede agregar atributos al puntero nulo nulo, puede usar la instrucción para en la declaración?/** para detectar si el objeto es un objeto vacío (no contiene ningún atributo legible). * El método solo detecta las propiedades del objeto en sí y no detecta las propiedades heredadas del prototipo. */function isoWnEtimty (obj) {for (nombre var en obj) {if (obj.hasownproperty (name)) {return false;}} return true;};La diferencia entre {} y nulo:
Esta cosa es muy importante.
var a = {}; var b = null; a.name = 'realwall'; b.name = 'jim'; // se informará un error aquí. B es un puntero nulo para una imagen, y los atributos no se pueden agregar directamente como objetos ordinarios. b = a; b.name = 'jim'; // A y B apuntan al mismo objeto en este momento. A.Name, B.Name son todos 'Jam'