理解Javascript_02_理解未定义和空
一般的回答:实际上是在ECMAScript的原始类型中,它有Undefined和Null类型。这两种类型都对应于它们自己唯一的私有值,即undefined和null。undefined值实际上是从null值派生出来的,所以ECMAScript将它们定义为相等。这个结论可以通过以下代码来验证:alert(undefined==null);//true虽然这两个值是相等的,但它们有不同的含义。Undefined是在变量声明但未初始化时赋予变量的值,null用于表示尚不存在的对象。如果函数或方法要返回一个对象,当找不到该对象时,它通常返回null。所以alert(undefined===null);//false说实话,我不明白undefined为什么会继承null,也就是说它继承了。那为什么不定义!==null,未初始化的变量和不存在的函数返回的对象有什么区别?问题多种多样,让人不服气。看看内存怎么说:Udefined代表没有赋值的基本数据类型。Null表示没有赋值的引用数据类型。我们来看一段代码:复制代码如下: var agevar id=100var div 02=document . getelementbyid(' div 02 ');//注意:div02是不存在的var div 01=document . getelementbyid(' div 01 ');//注意:div01有预警(id);//100警戒(年龄);//未定义的警报(div 02);//null alert(div 01);//对象我们再来看看内存情况:。
解决第一个问题:为什么undefine从null继承?在Javascript中,基本数据类型都有对应的引用数据类型,数字数字、字符串字符串、布尔布尔.并且它们具有完全相同的行为,并且它们之间会有自动拆包和打包操作。在内存分析的文章中,描述了将基本数据类型放入堆栈内存的意义,从中我们可以得出一个粗浅的结论:基本数据类型是对应引用数据类型的子类,只是为了提高效率才放入堆栈内存;对应的undefined表示没有值的基本类型,null表示没有值的引用类型,因此必然会引入Undefined来继承Null。解决第二个问题:为什么undefined==null?出来的答案是从null继承的undefined。记忆告诉我们的答案在堆栈中。解决第三个问题:为什么不定义!==null memory告诉我们,它们的意义真的不一样。老话说得好,Udefined代表没有赋值的基本数据类型,Null代表没有赋值的引用数据类型。他们的内存图在解决额外的问题上有很大的不同:null处理引用,为什么null在堆栈内存而不是堆内存中?答案一样简单高效!有必要在堆栈中分配额外的内存来指向堆中的null吗?附加增益:当我们想切断与对象的连接,但又不想给变量赋其他值时,那么我们可以设置null,比如var obj=new Object();obj=null关于未定义和null的一些行为:当null参与数值运算时,其值会自动转换为0。因此,以下表达式将在计算后获得正确的数值:表达式:123 null结果值:123 typeof null返回对象,因为null表示没有值的引用。Undefined是全局对象(窗口)的特殊属性,其值是undefined类型的特殊值。undefined undefined参与任何数值计算,结果必须是NaN。当声明的变量未初始化时,变量的默认值是未定义的,但未定义不同于未定义的值。类型运算符无法区分这两个值,所以用if(typoof var=' undefined '){//code here }来判断变量是否存在,完全兼容未定义和未初始化两种情况。当你从记忆的高度分析问题时,这样抽象的东西有实际的表达,什么都有。
版权声明:理解Javascript_02_理解未定义和空是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。