未定义与 table 类型的输入参数相对应的函数 reshape_关于 JavaScript 的数据类型,你知多少?...

数据类型通常是一门编程语言的基础知识

9366948a3621aba96a2a3138a64536b0.png

JavaScript DataType

JavaScript 的数据类型可以分为 7 种:空(Null)、未定义(Undefined)、数字(Number)、字符串(String)、布尔值(Boolean)、符号(Symbol)、对象(Object)。

其中前 6 种类型为基础类型,最后 1 种为引用类型。这两者的区别在于:

基础类型的数据在被引用或拷贝时,是值传递,也就是说会创建一个完全相等的变量;

而引用类型只是创建一个指针指向原有的变量,实际上两个变量是“共享”这个数据的,并没有重新创建一个新的数据。

下面我们就来分别介绍这 7 种数据类型的重要概念及常见操作。

Undefined

Undefined 是一个很特殊的数据类型,它只有一个值,也就是 undefined。

可以通过下面几种方式来得到 undefined:

  • 引用已声明但未初始化的变量;
  • 引用未定义的对象属性;
  • 执行无返回值函数;
  • 执行 void 表达式;
  • 全局常量 window.undefined 或 undefined。

对应代码如下:

var a; // undefinedvar o = {}o.b // undefined(() => {})() // undefinedvoid 0 // undefinedwindow.undefined // undefined

其中比较推荐通过 void 表达式来得到 undefined 值,因为这种方式既简便(window.undefined 或 undefined 常量的字符长度都大于 "void 0" 表达式)

又不需要引用额外的变量和属性;同时它作为表达式还可以配合三目运算符使用,代表不执行任何操作。

如下面的代码就表示满足条件 x 大于 0 且小于 5 的时候执行函数 fn,否则不进行任何操作:

x>0 && x<5 ? fn() : void 0;

如何判断一个变量的值是否为 undefined 呢?

下面的代码给出了 3 种方式来判断变量 x 是否为 undefined,你可以先思考一下哪一种可行。

方式 1 直接通过逻辑取非操作来将变量 x 强制转换为布尔值进行判断;

方式 2 通过 3 个等号将变量 x 与 undefined 做真值比较

方式 3 通过 typeof 关键字获取变量 x 的类型,然后与 'undefined' 字符串真值比较

// 方式1if(!x) {  ...}// 方式2if(x===undefined) {  ...}// 方式3if(typeof x === 'undefined') {  ...// 推荐使用可行}

现在来揭晓答案,方式 1 不可行,因为只要变量 x 的值为 undefined、空字符串、数值 0、null 时都会判断为真。方式 2 也存在一些问题,虽然通过 “===” 和 undefined 值做比较是可行的,但如果 x 未定义则会抛出错误 “ReferenceError: x is not defined” 导致程序执行终止,这对于代码的健壮性显然是不利的。方式 3 则解决了这一问题。

Null

Null 数据类型和 Undefined 类似,只有唯一的一个值 null,都可以表示空值,甚至我们通过 “==” 来比较它们是否相等的时候得到的结果都是 true,

但 null 是 JavaScript 保留关键字,而 undefined 只是一个常量。

也就是说我们可以声明名称为 undefined 的变量(虽然只能在老版本的 IE 浏览

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值