只要是说到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. Centos下和Win7下查看端口占用情况

    Centos #会列出所有正在使用的端口及关联的进程/应用 netstat -nap #portnumber要用具体的端口号代替,可以直接列出该端口听使用进程/应用 lsof -i :portnumb ...

  2. 转:体积阴影(Shadow Volumes)生成算法

    下面以最快的速度简单谈谈阴影生成技术,目前普遍采用的一般有三种:Planar Shadow.Shadow Mapping和Shadow Volume,前者类似投影,计算最简单,缺点只能绘制抛射在平面上 ...

  3. CSS中position:fixed的相关用法

    CSS中的三大重点知识: 1.float,浮动 2.盒子模型 3.position绝对定位 今天主要写下position中fixed相关知识: position:static,relative,abs ...

  4. nginx深入使用

    1. nginx使用命令 nginx -s stop --快速关闭Nginx,可能不保存相关信息,并迅速终止web服务. nginx -s quit --平稳关闭Nginx,保存相关信息,有安排的结束 ...

  5. 客户端调用rcf库 时,返回值千万不要用auto

    std::vector<std::wstring> list = Client.xxxx(); 千万不要写成 auto  list = Client.xxxx();

  6. numpy二分查找

    a = np.array([1, 2, 2, 3]) print(np.searchsorted(a, 0)) # 0 print(np.searchsorted(a, 1)) # 0 print(n ...

  7. [转]NLP数据集

    原文链接 nlp-datasets Alphabetical list of free/public domain datasets with text data for use in Natural ...

  8. 超酷的 Vim 搜索技巧

    尽管目前我们已经涉及 Vim 的多种特性,但此编辑器的特性集如此庞大,不管我们学习多少,似乎仍然远远不足.承接我们的 Vim 教程系列,本文我们将讨论 Vim 提供的多种搜索技术. 不过在此之前,请注 ...

  9. jQuery Chosen 使用

    jQuery Chosen 使用   1.  jQuery Chosen 选择框下拉值重置: 1 2 3 4 //重置 $("#easySelBrands").val(" ...

  10. Photoshop做32位带Alpha通道的bmp图片

    原文链接: http://blog.sina.com.cn/s/blog_65c0cae801016e5u.html   批量制作32位带Alpha通道的bmp图片,可以制作一个动作,内容可以如下: ...