JavaScript - undefined与null的区分及最佳实践


主要参考

  • 《JavaScript高级程序设计》

ECMAScript中的六种数据类型

  • ECMAScript中包含六种数据类型

    • Undefined
    • Null
    • Boolean
    • Number
    • String
    • Object
  • 其中,Undefined类型和Null类型是唯二的仅有一个值的数据类型

运算符typeof

  • 通过typeof运算符可能返回如下六种可能的字符串:

    • "undefined"
    • "boolean"
    • "string"
    • "number"
    • "object"
    • "function"
  • 与ECMAScript中定义的六种数据类型比较,可发现如下差异点:
    • typeof null并不会返回"null"。这是因为,特殊值null被认为是一个空的对象引用,因此会返回"object"
    • 返回值中出现了"function",而函数并不是ECMAScript中定义的一种数据类型。实质上,在ECMAScript中函数也是对象,但函数确实有其特殊属性,因此区分函数和其他对象是有必要的

Undefined类型定义及其最佳实践

  • Undefined类型中的唯一值undefined,表示未初始化的变量
  • 注意:区分未初始化的变量尚未定义的变量
    var message;
    // var age;
    
    alert(message); // "undefined"
    alert(age); // ReferenceError: age is not defined
    • 但是,使用typeof操作符时,会有如下返回:

      var message;
      // var age;
      
      alert(typeof message); // "undefined"
      alert(typeof age); // "undefined"
  • 综上,最佳实践

    每次定义变量时都进行显示初始化,那么当typeof操作符返回"undefined"时,只能说明该变量尚未被声明

Null类型定义及其最佳实践

  • nullundefined的关系:

    alert(null == undefined); // true

    因为,实际上undefined是派生自null,但之所以区分是强调其各自的特殊指向

  • 上面说过,null的特殊意义在于表示空的对象引用(空对象指针),因此建议如下最佳实践

    当一个意在保存对象的变量尚未实际真正保存对象时(刚声明且暂未赋值),都应当明确地让该变量保存null值:

    • 通过nullundefined来区分暂未赋值而实际意义不同的对象;
    • 仅需通过检查null便可判定相应变量是否已保存了一个对象的引用。


JavaScript - undefined与null的区分及最佳实践

原文地址:https://www.cnblogs.com/JustBeZero/p/9651738.html

时间: 2024-10-09 21:25:49

JavaScript - undefined与null的区分及最佳实践的相关文章

JavaScript:undefined And null差异

班吃饭的时候,同事偶然问了一个问题:undefined和null究竟有什么差别?无法回答,回去查阅相关文档,算了有了一个了解,做相关的总结.在開始之前,请看例如以下代码,算是抛出这个问题: console.info(undefined == null); //true console.info(undefined === null); //false 上述结果能够给我们一个这种理解: undefined和null两个值相等,可是他们含义不同.详细两者有什么差别,先理解下undefined和nul

JavaScript:undefined And null区别

下班吃饭的时候,同事偶然问了一个问题:undefined和null到底有什么区别?无法回答,回去查阅相关资料,算了有了一个了解,做相关的总结,在开始之前,请看如下代码,算是抛出这个问题: console.info(undefined == null); //true console.info(undefined === null); //false 上述结果可以给我们一个这样的理解: undefined和null两个值相等,但是他们含义不同.具体两者有什么区别,先理解下undefined和nul

Javascript模块化编程(一)模块的写法最佳实践六、输入全局变量 独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。 为了在模块内部调用全局变量,必须显式地将其他变量输入模块。

Javascript模块化编程,已经成为一个迫切的需求.理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块但是,Javascript不是一种模块化编程语言,它不支持类class,更遑论模块module了 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂.网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者不得不使用软件工程的方法,管理网页的业务逻辑. Javascript模块化编程,已

Javascript中的null和 undefined

Javascript Undefined vs NULL Many a times we often get confused on whats the difference between UNDEFINED and NULL. undefined means a variable has been declared but has not yet been assigned a value. On the other hand, null is an assignment value. It

JS中undefined、null以及NaN之间的区别,以及对象属性赋值的面试题

(1)以下三种情况typeof 返回类型为undefined --当变量未初始化时 --变量未定义时 --函数无明确返回值时(函数没有返回值时返回的都是undefined) (2)Null 类型 undefined 是由null派生处理的,因此undefined == null undefined 是声明了但是没有初始化的该变量, null表示尚未存在的对象 . (3)NaN 值 是一个特殊值,表示非数(Not a Number),类型转换失败就会返回NaN --NaN 不等于自己,即 NaN

前端性能优化最佳实践

最佳实践1:使用DocumentFragments或innerHTML取代复杂的元素注入 DOM操作在浏览器上是要付税的.尽管性能提升是在浏览器,DOM很慢,如果你没有注意到,你可能会察觉浏览器运行非常的慢.这就是为什么减少创建集中的DOM节点以及快速注入是那么的重要了. 现在假设我们页面中有一个<ul>元素,调用AJAX获取JSON列表,然后使用JavaScript更新元素内容.通常,程序员会这么写: Javascript代码 var list = document.querySelecto

【温故而知新-Javascript】比较 undefined 和 null 值

JavaScript 中有两个特数值: undefined和null,在比较它们的时候需要留心.在读取未赋值的变量或试图读取对象没有的属性时得到的就是 undefined 值. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Learn4UndefinedAndNull</title> </head

javascript类型系统——undefined和null

× 目录 [1]原因 [2]undefined [3]null 前面的话 一般的程序语言,表示空的只有null,但javascript的设计者Brendan Eich却设计了一个undefined,这无疑增加了程序复杂度,但这样做也是有一定原因的.本文将详细介绍javascript中的undefined和null 历史原因 1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示”无”的值.根据C语言的传统,null被设计成可以自动转为0 但是,JavaScript的设

javascript中undefined和null的区别详解

一.问题的由来 永远不要直接使用undefined进行变量判断使用字符串"undefined"对变量进行判断 这里,undefined是原始值,在JS中undefined出现只有两种情况,一种是变量未定义.一种是定义了变量,但是没有赋值. 如果这个地方person未定义,那么利用person===undefined全等判断就会报错,person未定义但是如果使用typeof来判断,那么就不会报错了. ep: alert(person == undefined);//报错 person