只要是说到js的变量和数据类型,就脱不开null和undefined,这兄弟俩就是js的重要基础,不可不察,无数的同学们都用过放大镜多角度多批次地研究过这兄弟俩,真是深受欢迎。^-^

js也真是怪异,有个null不够,还要折腾出个undefined。

虽然被诟病,但这就是设计。

在c#和java中,null就是表示空,没有分配内存。

在js中的null采用Number(null)的结果是0,代表什么,代表这不是空,仅仅是空值,是没有值,它的数据类型是"object"。

那么为了表示空,所以设计者搞了一个undefined,它有单独的数据类型就是"undefined"。

使用Number(undefined)的结果是NaN,转换结果也能达到设计目的。

造成这样的设计结果,表达式中的数据类型转换起了关键作用。

未定义的变量或已定义的但未赋值的变量就表示空,就是undefined。

undefined更多的是javascript本身使用。

比如,码农要想删除一个对象的属性不是把这个属性赋上undefined,因为这样属性还是在,用hasOwnProperty检测一下这个属性还是存在,在有些逻辑需要判断的地方就会出问题,要是删除属性就前置delete。

var o1={p1:'v1',p2:'v2'};
o1.p2=undefined;
o1.hasOwnProperty('p2'); //true

要删除数组元素,为了没有副作用,那么就用splice。

码农要是使用undefined来赋值就要想想清楚了。

对于码农来说,更多的是使用null,可以将一个变量赋上空值,断开和对象实例的联系,保证垃圾回收,也可以以备该变量符号后续使用。

null和undefined比较的时候也是坑坑坑

null == undefined //true
null == false //false
undefined == false //false

虽然怪异,但这就是结果,这就是设计。

可查看ECMA-262的相关定义,规则定义链接1链接2

END

聊聊javascript的null和undefined的更多相关文章

  1. JavaScript中Null和Undefined的深渊

    探索JavaScript中Null和Undefined的深渊 当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean.这些原始类型相当简单 ...

  2. 细说Javascript之null、undefined和NaN

    首先简单介绍一下Javascript中的数据类型,Javascript中的数据类型有undefined,boolen,number,string和object等5种,前4种是原始类型,第5种是引用类型 ...

  3. JavaScript typeof, null, 和 undefined

    typeof 操作符 你可以使用 typeof 操作符来检测变量的数据类型. 实例 typeof "John"                // 返回 string typeof ...

  4. JavaScript中null和undefined的总结

    先说null,它表示一个特殊值,常用来描述“空值”.对null执行typeof运算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”(感觉怪怪的).实际 ...

  5. JavaScript中null和undefined

    JavaScript的数据类型大体分为两类:原始类型和对象类型.其中,原始类型包括数字.字符串和布尔值.此外,JavaScript中还有两个特殊的原始值:null(空)和undefined(未定义), ...

  6. 关于 JavaScript 的 null 和 undefined,判断 null 的真实类型

    null.undefined 博客地址: https://ainyi.com/39 undefined:表示一个变量最原始的状态,而非人为操作的结果 null:表示一个对象被人为的重置为空对象,而非一 ...

  7. 探索JavaScript中Null和Undefined的深渊

    当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean.这些原始类型相当简单,行为符合常识.但是,本文将更多聚焦独特的原始数据类型Null ...

  8. JavaScript处理null、undefined和空值

    最近一直在写前端,在使用jquery的ajax请求然后处理返回值的时候,经常会遇到返回值为undefined或者"null"的情况,很是头疼,而返回接口是来自于其他公司的,所以这种 ...

  9. JavaScript中Null和Undefined的区别

    Null: null是js中的关键字,表示空值,null可以看作是object的一个特殊的值,如果一个object值为空,表示这个对象不是有效对象. Undefined: undefined不是js中 ...

随机推荐

  1. java非web应用修改 properties/xml配置文件后,无需重启应用即可生效---自动加载

    实现时主要使用Commons-Configuration.jar包,还需要commons-lang,disgestor,beanutils,collections等, package propFile ...

  2. Distributed systems theory for the distributed systems engineer

    Gwen Shapira, SA superstar and now full-time engineer at Cloudera, asked a question on Twitter that ...

  3. mac安装thrift

    一.安装brew包管理工具 不想Ubuntu自带apt,redhat自带yum,mac是不自带包管理工具的.需要自己安装,最常用的是brew,Homebrew简称brew,OSX上的软件包管理工具,在 ...

  4. 【经验总结】 fisheye 3.1.5 安装、破解全过程 图文教程(2.0以上版本均可成功!)

    声明:此破解仅为个人娱乐,如果你有钱,请支持正版! 重要说明,只要把fisheye先关掉即可,然后执行下面的破解步骤,一样可以破解!本人已测试通过. 一.安装.破解fisheye最新版3.1.5 所需 ...

  5. 如何写UI及屏幕适配的一些技巧

    总结一下关于UI布局及屏幕适配的一些实战技巧,尤其使用纯代码,会对提升效率及代码易于维护等方面有明显帮助,这里提到的没有使用任何Xib, 如果不是在外包公司,也推荐大家多使用甚至完全使用纯代码布局UI ...

  6. VC设置视图背景颜色方法

    视图的背景一般来说是白色的,在缺省情况下,它和系统定义的颜色COLOR_WINDOW是一致的.设计者一般会希望自己的程序可以让用户轻松地改变窗口背景颜色,或是用漂亮的图片来充填背景.我们可以用Wind ...

  7. Linux 性能监控 : CPU 、Memory 、 IO 、Network

    一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70% 上下 ...

  8. aaronyang的百度地图API之LBS云与.NET开发 Javascript API 2.0【基本地图的操作】

    为了更简单的演示,我们创建个.NET的ASP.NET MVC4项目 好了,上面都是后话,POI说白了,就是你的用户的数据,很多数据,不过没关系,因为你的数据如果存在百度的LBS云上,那么大数据你就不用 ...

  9. JavaSE入门学习20:Java面向对象之接口(interface)(一)

    一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种详细实现体.而接口定义了某一批类所须要遵守的 ...

  10. Fix SCRIPT5009: “RegisterSod” undefined error

    When I set up development environment for apps for SharePoint 2013 and quickly get apps from SharePo ...