前端面试——JavaScript中undefined 和 null 区别

news/2024/7/19 13:21:04 标签: js, 前端, 面试

大家在面试前端的时候经常会问到这个问题,之前虽然也知道这两个之间的区别,但是让我描述的话,感觉上还是说的不是很清楚。今天也详细看了一次这个知识点,现在来说说这两者间的区别。

 

null

在 JavaScript 中 null 表示 "什么都没有"。

null是一个只有一个值的特殊类型。表示一个空对象引用。

 

undefined

在 JavaScript 中, undefined 是一个没有设置值的变量。

typeof 一个没有值的变量会返回 undefined

 

undefined 和 null 的区别

null 和 undefined 的值相等,但类型不等:

typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true

 

null是javascript的关键字,可以认为是对象类型,它是一个空对象指针,和其它语言一样都是代表“空值”,不过 undefined 却是javascript才有的。undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。

JavaScript类型转换图

《javaScript权威指南》:

null 和 undefined 都表示“值的空缺”,你可以认为undefined是表示系统级的、出乎意料的或类似错误的值的空缺,而null是表示程序级的、正常的或在意料之中的值的空缺。

如果还没有看懂下面还有一个版本,哈哈!

《javaScript高级程序设计》:

在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。   null值则是表示空对象指针。

最后,我的理解就是: undefined是访问一个未初始化的变量时返回的值,而null是访问一个尚未存在的对象时所返回的值。因此,可以把undefined看作是空的变量,而null看作是空的对象。

在定义一个想保存对象的变量时,就可以让该变量先保存null值,这样既能体现null是一个空指针对象,也能更好的区分nullundefined


最后简单的来说:

null是不存在
undefined错误、不明确、未定义

 


http://www.niftyadmin.cn/n/1466696.html

相关文章

JavaScript 正则表达式表单验证简单实例

大家在前端开发过程中总会遇到一些表单,难免会碰到一些正则表达式,以下为一些简单表单实例的正则表达式,仅供参考,具体可以自行修改: /*是否带有小数*/ function isDecimal(strValue ) { var objRegExp /^\d\.\…

前端面试——JavaScript 严格模式(use strict)

使用 "use strict" 指令 "use strict" 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。 它不是一条语句,但是是一个字面量表达式,在 JavaScript 旧版本中会被忽略。 "use strict" 的目的是指定代码在严格条件下执行。…

前端面试——前端页面有哪三层构成,分别是什么?作用是什么?

HTML、CSS和JS,是Web前端开发包括的三要素。有许多 web 设计师都有为纸质印刷品设计版面的经验。事实上,设计网站时,把网页当做纸质印刷品来对待是最容易想到的思想,除了把白纸换成了屏幕,其他做法没什么两样。这种做法…

前端面试——href=#、href=javascript:void(0)与href=javascript:;的区别

我们在使用a标签的空链接时,通常写为 href# 或者 hrefjavascript:void(0) ,这两种写法有什么区别呢?我想很多人都不会去深究,但是这两种写法出来的效果有时候是不一样的。 概括来说,这两种写法有如下几个区别&#xf…

前端面试——JavaScript中this的作用

this是 JavaScript 语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如: function test() { this.x 1; } 随着函数使用场合的不同,this 的值会发生变化。但是有一个总的原则,…

前端面试——JS去除首尾空格代码

关于 JavaScript 里的 trim()/strip() 方法 在其他语言中常常用 trim()/strip() 方法脱去不必要的空格等元素。 JavaScript 本身并不提供 trim() 方法,不过可以用正则表达式,通过给 String 对象增加 trim 方法的方式实现。 如下: if(typeo…

前端面试——JavaScript的BOM和DOM有什么区别?

这是浏览器运行时中的两个不同的概念。 1、BOM 浏览器对象模型 Browser Object Model(浏览器对象模型),提供了独立于内容而与浏览器窗口进行交互的对象。描述了与浏览器进行交互的方法和接口,可以对浏览器窗口进行访问和操作&am…

HTML DOM 简介

什么是 DOM? DOM 是 W3C(万维网联盟)的标准。 DOM 定义了访问 HTML 和 XML 文档的标准: "W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容…