javascript基础学习系列十一:数据类型

ECMAScript 有 6 种简单数据类型(也称为原始类型):Undefined、Null、Boolean、Number、 String 和 Symbol。

  • Symbol(符号)是 ECMAScript 6 新增的。
  • 还有一种复杂数据类型叫 Object(对 象)。
  • Object 是一种无序名值对的集合。

因为在 ECMAScript 中不能定义自己的数据类型,所有值都可 以用上述 7 种数据类型之一来表示。

1. typeof操作符:

因为 ECMAScript 的类型系统是松散的,所以需要一种手段来确定任意变量的数据类型。typeof 操作符就是为此而生的。

  • "undefined"表示值未定义;
  • "boolean"表示值为布尔值;
  • "string"表示值为字符串;
  • "number"表示值为数值;
  • "object"表示值为对象(而不是函数)或 null;
  • "function"表示值为函数;
  • "symbol"表示值为符号。

把一个变量(message)和一个数值字面量传给了 typeof 操作符。注意,因 为 typeof 是一个操作符而不是函数,所以不需要参数(但可以使用参数)。

注意 typeof 在某些情况下返回的结果可能会让人费解,但技术上讲还是正确的。比如,调用 typeof null 返回的是"object"。这是因为特殊值 null 被认为是一个对空对象的引用。

2. Undefined类型:

Undefined 类型只有一个值,就是特殊值 undefined。当使用 var 或 let 声明了变量但没有初始 化时,就相当于给变量赋予了 undefined 值。

let message;
    console.log(message == undefined); // true

变量 message 在声明的时候并未初始化。而在比较它和 undefined 的字面值时, 1 两者是相等的。

变量 message 显式地以 undefined 来初始化。但这是不必要的,因为默认情况下,任何未经初始化的变量都会取得 undefined 值。

let message; // 这个变量被声明了,只是值为undefined
// 确保没有声明过这个变量 // let age
console.log(message); // "undefined" console.log(age); // 报错

第一个 console.log 会指出变量 message 的值,即"undefined"。而第二个 console.log 要输出一个未声明的变量 age 的值,因此会导致报错。对未声明的变量,只能执行一个 有用的操作,就是对它调用 typeof。

在对未初始化的变量调用 typeof 时,返回的结果是"undefined",但对未声明的变量调用它时, 返回的结果还是"undefined",这就有点让人看不懂了。

let message; // 这个变量被声明了,只是值为undefined // 确保没有声明过这个变量
// let age
console.log(typeof message); // "undefined"
console.log(typeof age);     // "undefined"

typeof 返回的都是字符串"undefined"。逻辑上讲这是对的,因为虽然 严格来讲这两个变量存在根本性差异,但它们都无法执行实际操作。

undefined 是一个假值。因此,如果需要,可以用更简洁的方式检测它。不过要记住,也有很多 其他可能的值同样是假值。所以一定要明确自己想检测的就是 undefined 这个字面值,而不仅仅是 假值。

let message; // 这个变量被声明了,只是值为undefined
// age 没有声明
if (message) {
    
     // 这个块不会执行
}
if (!message) {
    
     // 这个块会执行
}
if (age) {
    
    
// 这里会报错
}

猜你喜欢

转载自blog.csdn.net/wanmeijuhao/article/details/135438985