null 与 undefined 的区别

卢植
• 阅读 1250

一 定义

null 是 javascript 的关键字,表示一个特殊值,常用来描述"空值",typeof 运算返回"object",所以可以将 null 认为是一个特殊的对象值,含义是"非对象"。

undefined 是预定义的全局变量,他的值就是"未定义", typeof 运算返回 "undefined"

typeof null; // "object"
typeof undefined; // "undefined"

二 转义

转换成 Boolean 时均为 false,转换成 Number 时有所不同

!!(null); // false
!!(undefined); // false
Number(null); // 0
Number(undefined); // NaN

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

三 判定

isNull = function (obj) {
  return obj === null;
}
isUndefined = function (obj) {
  return obj === void 0;
}

四 用法

null 常用来定义一个空值

undefined 典型用法是:

  1. 变量被声明了,但没有赋值时,就等于 undefined。

    var test;
    console.log(test); //undefined
  2. 调用函数时,应该提供的参数没有提供,该参数等于 undefined。

    //类如jQuery最外层IIFE用法
    //这里是为确保undefined的值,因为es3中undefined可以赋值,es5才做了修正,变为只读
    
    (function( window, undefined) {
    
    })(window)
  3. 对象没有赋值的属性,该属性的值为 undefined。

    var test = {}
    console.log(test.a); // undefined
  4. 函数没有返回值时,默认返回 undefined。

    function test(){}
    test(); //undefined

参考 http://www.ruanyifeng.com/blo...

点赞
收藏
评论区
推荐文章
Kent_Sun Kent_Sun
4年前
js判undefined | null
js判undefined|null判undefinedjavascriptvarexpundefined;if(typeof(exp)"undefined"){alert("undefined");}判nulljavascriptvarexpnull;if(exp&&typ
Python进阶者 Python进阶者
3年前
一篇文章告诉你JavaScript 如何实现继承
背景简介JavaScript在编程语言界是个特殊种类,它和其他编程语言很不一样,JavaScript可以在运行的时候动态地改变某个变量的类型。比如你永远也没法想到像isTimeout这样一个变量可以存在多少种类型,除了布尔值true和false,它还可能是undefined、1和0、一个时间戳,甚至一个对象。如果代码跑异常,打开浏览器,开始断点调试,发现
明月 明月
3年前
JS数据类型的几种判断方法
1.typeof(常用)typeof是一个运算符,返回值是一个字符串,用来说明变量的数据类型,可以用来判断number,string,object,boolean,function,undefined,symbol这七种类型.2.instanceof(知道即可)instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上,返回值为布尔值,用于指示一个变量是否属于某个对象的实例3.Object.prototype.to
Souleigh ✨ Souleigh ✨
4年前
安利几个JS开发小技巧
开发小技巧<br/1、转换布尔值除了常规的布尔值true和false之外,JavaScript还将所有其他值视为truthy或falsy。除非另有定义,否则JavaScript中的所有值都是truthy,除了0,“”,null,undefined,NaN,当然还有false,这些都是falsy我们可以通过使用负算运算符轻松地
待兔 待兔
4年前
[Dart]Dart语言之旅<二>:变量
变量以下是创建变量并为其分配值的示例:varname'Bob';变量是引用。名为name的变量包含对值为“Bob”的String类型的对象的引用。默认值未初始化的变量的初始值为null。即使是数字类型的变量,初始值也为null,因为数字也是对象。intlineCount;assert(lineCountnull)
劳伦斯 劳伦斯
4年前
前端面试题自检 JS CSS 部分
JS类型JavaScript的简单数据类型Number,String,Boolean,Undefined,Null,Symboltypeof操作符的返回值numberstringbooleanundefinedobjectfunction
Easter79 Easter79
3年前
Typescript中undefined与null的区别
ts配置文件中有个选项  "strictNullChecks" 如果设置值为false,那么以下代码都不是问题,如果设置为true,以下代码可以说明undefined和null在ts中的区别//两个空类型letu:undefinedundefinedletn:nullnull//
Wesley13 Wesley13
3年前
Object
nil用来给对象赋值NULL则给任何指针赋值    //NULL和nil不能互换,nil用于类指针赋值NSNull则用于集合操作一般情况下最好使用用nil(空对象值,有意义)\nil 任意方法\,不会导致崩溃NULL是一个通用指针(泛型指针,指向空指针)NSNull,NULL和nil在本质上应该
Stella981 Stella981
3年前
Javascript中的基本数据类型
Undefined在var或者let中声明了变量但没有赋值时,这个变量的值就是undefined.使用typeof关键字检测未声明变量的类型为undefined.Nullnull表示一个空对象指针,所以用typeof检测null时,会返回objectundefine派生自null,
Stella981 Stella981
3年前
JavaScript基础2
普通的JavaScript对象是命名值的无序集合,JavaScript同样定义了一种特殊的对象数组array,表示带编号的值的有序集合,JavaScript为数组定义了专用的语法,使得数组具有区别于普通对象而独有的行为特性JavaScript还定义了另一种特殊对象函数,函数是具有与它相关联的可执行代码的对象,通过调用函数来运行可执行代码并返回运算结
小万哥 小万哥
1年前
SQL 中的 NULL 值:定义、测试和处理空数据,以及 SQL UPDATE 语句的使用
SQLNULL值什么是NULL值?NULL值是指字段没有值的情况。如果表中的字段是可选的,那么可以插入新记录或更新记录而不向该字段添加值。此时,该字段将保存为NULL值。需要注意的是,NULL值与零值或包含空格的字段不同。具有NULL值的字段是在记录创建期