Tout d'abord, parlons de la différence entre null et indéfini:
Exécutez le type de types sur les variables déclarées mais non initialisées et non déclarées, les deux renvoient "non définis".
Null signifie un pointeur d'objet vide et l'opération Typeof renvoie "Object".
Généralement, la valeur d'une variable n'est pas explicitement définie sur indéfinie, mais nul au contraire, pour la variable qui est sur le point d'enregistrer l'objet, la variable doit être explicitement autorisée à enregistrer la valeur nul.
var bj; alert (bj); // "non défini" bj = null; alert (typeof bj); // alerte "objet" (bj == null); // truebj = {}; alert (bj == null); //FAUXLes deux fonctions suivantes m'ont été données par le frère senior Deng, merci.
/ ** détecter si l'objet est un objet vide (sans propriétés lisibles). * La méthode détecte à la fois les propriétés de l'objet lui-même et les propriétés héritées du prototype (de sorte que cela n'a pas fait HasownProperty). * / fonction isEmpty (obj) {for (var name in obj) {return false;} return true;};L'objet vide est-il mentionné ici {} ou null? J'ai écrit un cas de test.
var a = {}; a.name = 'realwall'; console.log (isEmpty (a)); //falSeconsole.log (iSempty ({})); //trueconsole.log(iSempty(null)); // Vrai // Notez qu'il n'y a pas d'erreur de syntaxe lorsque le paramètre est nul, c'est-à-dire, bien que vous ne puissiez pas ajouter d'attributs au pointeur null nul, vous pouvez utiliser l'instruction FOR IN? / ** Pour détecter si l'objet est un objet vide (ne contient aucun attribution lisible). * La méthode détecte uniquement les propriétés de l'objet lui-même et ne détecte pas les propriétés héritées du prototype. * / fonction isOnempy (obj) {for (var name in obj) {if (obj.hasownproperty (name)) {return false;}} return true;};La différence entre {} et null:
Cette chose est très importante.
var a = {}; var b = null; a.name = 'realwall'; b.name = 'jim'; // Une erreur sera signalée ici. B est un pointeur nul pour une image, et les attributs ne peuvent pas être ajoutés directement comme les objets ordinaires. b = a; b.name = 'jim'; // A et B pointent le même objet pour le moment. A.Nom, B.Name sont tous «Jam»