理解Javascript_02_理解undefined和null_javascript技巧
来自普遍的回答:
其实在 ECMAScript 的原始类型中,是有Undefined 和 Null 类型的。 这两种类型都分别对应了属于自己的唯一专用值,即undefined 和 null。
值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的,通过下列代码可以验证这一结论:
alert(undefined == null); //true
尽管这两个值相等,但它们的含义不同。
undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
所以alert(undefined===null);//false
说实话,我没有看明白,为什么undefined会继承null,即然是继承那为什么undefined!==null,还有未初始化的变量与函数返回的对象不存在之间有什么区别,问题种种,让人很不信服。
看看内存是怎么说的:
Udefined代表没有赋值的基本数据类型。
Null代表没有赋值的引用数据类型。
我们来看一段代码:
var age;
var id = 100;
var div02 = document.getElementById("div02");//注:div02是不存在的
var div01 = document.getElementById("div01");//注:div01存在
alert(id);//100
alert(age);//undefined
alert(div02);//null
alert(div01);//object
再来看一下内存的情况:

解决第一个问题:为什么undefine继承自null
在Javascript中,基本数据类型都有一个与其对应的引用数据类型,number Number,string String,boolean Boolean...,他们具有完全相同的行为,并且相互之间会产生自动拆箱与装箱的操作。在内存分析一文中已经讲述了基本数据类型放在栈内存中的意义,由此这们可以得出一个肤浅的结论:基本数据类型是对应引用数据类型的子类,只不过是为了提高效率,将其放在栈内存中而已,对应的Undefined代表无值的基本类型,Null代表无值的引用类型,那势必就可以推出undefined继承null。
解决第二个问题:为什么undefined==null
推出来的答案undefined继承自null,内存告诉我们的答案他们都处于栈中
解决第三个问题:为什么undefined!==null
内存告诉我们,它们的意义确实是不一样的,老话一句:Udefined代表没有赋值的基本数据类型,Null代表没有赋值的引用数据类型。他们的内存图有很大的区别
解决额外的问题:null是处理引用的,为什么null处在栈内存中,而不是堆内存中
答案一样的简单,效率!有必要在栈中分配一块额外的内存去指向堆中的null吗!
额外的收获:
当我们要切断与对象的联系,但又并不想给变量赋于其他的值,那么我们可了置null,如var obj = new Object();obj=null;
一些关于undefined和null的行为
null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值:
表达式:123 + null 结果值:123
typeof null 返回object,因为null代表是无值的引用。
undefined是全局对象(window)的一个特殊属性,其值为Undefined类型的专用值undefined
undefined参与任何数值计算时,其结果一定是NaN。
当声明的变量未初始化时,该变量的默认值是undefined,但是undefined并不同于未定义的值。Typeof运算符无法区分这两种值
因此对于变量是否存在的判断操作是通过if(typeof var == ‘undefined'){ //code here } 来进行判断的,这样既完全兼容未定义(undefined)和未初始化(uninitialized)两种情况的
哈哈,当你站在内存的高度的分析问题的时候,如此抽象的东西有了实际的表现,一切变得简单起来!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Lors de l'écriture de code en PHP, nous pouvons rencontrer le message d'erreur « Avis : Propriété non définie ». Cette erreur signifie que nous accédons à une propriété non définie, généralement parce que la propriété n'a pas été initialisée dans le code. Alors, comment résoudre ce problème ? Voici quelques solutions possibles : Initialiser les propriétés C'est la manière la plus simple de résoudre ce problème. L'initialisation explicite d'une propriété dans le code garantit qu'elle est définie avant utilisation. Par exemple : classe

Si vous rencontrez souvent le message d'erreur « TypeError : Cannotreadproperty'$XXX'ofundefined » lors du développement avec Vue.js, comment devez-vous le gérer ? Cet article explique les causes de cette erreur et comment y remédier. La cause du problème est que lors de l'utilisation de Vue.js, nous l'utilisons souvent pour appeler des méthodes de composants Vue, telles que : exportdefault{data()

La différence entre null et NULL en langage C est la suivante : null est une définition de macro en langage C, généralement utilisée pour représenter un pointeur nul, qui peut être utilisé pour initialiser des variables de pointeur ou pour déterminer si le pointeur est nul dans une instruction conditionnelle ; NULL est une définition de macro en langage C. Une constante prédéfinie dans , généralement utilisée pour représenter une valeur nulle, utilisée pour représenter un pointeur nul, un tableau de pointeurs nuls ou un pointeur de structure nulle.

En JavaScript, non défini et null représentent le concept de « rien » : 1. undéfini représente une variable non initialisée ou une propriété inexistante lorsqu'une variable est déclarée mais qu'aucune valeur ne lui est attribuée, la valeur de la variable est undéfinie. lors de l'accès à des propriétés qui n'existent pas dans l'objet, la valeur renvoyée est également indéfinie ; 2. null représente une référence d'objet vide Dans certains cas, la référence d'objet peut être définie sur null pour libérer la mémoire qu'elle occupe.

undefined représente un état dans lequel une valeur ou une variable n'existe pas ou n'est pas définie. Il peut être utilisé comme valeur par défaut pour déterminer si une variable a reçu une valeur et peut également être utilisé pour définir les valeurs de paramètres par défaut. Bien qu'indéfini puisse avoir des significations et des usages différents dans différents langages de programmation, comprendre le concept d'indéfini peut nous aider à mieux comprendre et écrire des programmes.

Dans le langage Go, le package path est l'un des outils importants pour le traitement des chemins de fichiers. La fonction path.Join() peut combiner plusieurs chemins en un chemin complet. Cependant, vous rencontrerez parfois le message d'erreur « undéfini : chemin.Join », que devez-vous faire ? Voici plusieurs solutions courantes : Vérifiez l'instruction d'importation. Tout d'abord, vous devez confirmer que vous avez correctement importé le package de chemin. En langage Go, lors de l'import d'un package, vous pouvez

La différence entre null et non défini est : 1. Signification sémantique ; 2. Scénarios d'utilisation ; 3. Comparaison avec d'autres valeurs ; 4. Relation avec les paramètres de fonction ; . Performances dans la sérialisation JSON ; 9. Relation avec les types. Introduction détaillée : 1. Signification sémantique, null signifie généralement savoir que cette variable n'aura aucune valeur d'objet valide, tandis qu'undéfini signifie généralement que la variable n'a pas reçu de valeur ou que l'objet n'a pas cet attribut ; , etc.

Null et indéfini indiquent tous deux un manque de valeur ou un état indéfini. Selon le scénario d'utilisation, il existe quelques principes directeurs pour choisir d'utiliser null ou undefined : 1. Lorsque vous devez indiquer clairement qu'une variable est vide ou non valide. peut utiliser null ; 2. Lorsqu'une variable a été déclarée mais qu'aucune valeur n'a encore été attribuée, elle sera définie sur non définie par défaut. 3. Lorsque vous devez vérifier si une variable est vide ou non définie, utilisez l'opérateur d'égalité stricte "= ; ==" pour déterminer si la variable est nulle ou indéfinie. .
