undefined 、 undeclared 、 null 的区别

这几天忙着北上,今天分享比较简单的内容,关於「undefined 、 undeclared 、 null 三者的区别」

先比较 undefined 、 undeclared

undefined:宣告但尚未给予值
undeclared :根本没宣告过

var x;  
console.log(x); // undefined
console.log(y); // y is not defined

undeclared 可以使用 typeof 的机制来避免报错,对 typeof 来说,undeclared 或返回 undefined
https://ithelp.ithome.com.tw/upload/images/20210916/20141763DkbimJdMwg.png

接着来看 undefined 、 null

  • 两者都是基本类型,都只有一个值,分别为undefined 、 null
  • undefined 表示未定义、而 null 是空值
  • 虽然 typeof null 为 object , 但这是老 bug 了
  • null 常用於一些可能之後会有值的变数,先作为初始化
  • 注意:请避免使用 undefined 作为变数值 , 因为 JS 引擎本来就会把未定义的变数 赋值为 undefined , 多此一举没有意义,而且会影响debug
undefined == null // true
undefined === null // false

由於 JS 并没有把 undefined 列入保留字,要改undefined 的定义是可以的(当然自己实际打 code 不可以这麽做!

(function() {
    var undefined = 'not is undefined';
    console.log(undefined); //"not is undefined"
    console.log(typeof undefined) // "string"
})()

如果要确保拿到的 undefined 是原始的 undefined ,可以使用void 0,因为 void 所返回的一定是原始 undefined

var data;
console.log(data === void 0); //true

<<:  DAY 3:Read-Write-Lock Pattern,三人成虎,一人打虎!

>>:  第一次进入赌场是否要搞懂一下规则 - 永丰金 Shioaji API 初探

授权和认证开发方法

这里提供了有关如何在这里应用程序中实施身份验证和授权的方法:,这些指南将涵盖以下一般要点: 身份验证...

第07天 - 一些些的 MySQL(下)

把昨天没讲完的 MySQL 操作补充一下 实作的时候记得打开 XAMPP。 更动资料"表&...

Day 07-Terraform 写起来不够 DRY 的问题,这解 Terragrunt 你试试看

课程内容与代码会放在 Github 上: https://github.com/chechiacha...

LeetCode解题 Day26

782. Transform to Chessboard https://leetcode.com/...

铁人赛 Day10 -- 一定要知道的 CSS (七) -- background:linear-gradient渐层背景

前言 昨天知道一些背景的属性後,是不是觉得有点单调呀,所以我们今天就来谈谈渐层 基本语法 backg...