JavaScript数据类型(2)

202 阅读4分钟

2.4 undefined类型

JavaScript中,undefined是一个特殊的原始数据类型,用于表示一个变量声明但未赋值的状态。以下是关于undefined类型的详细介绍:

1. undefined的定义

  • 当一个变量被声明但没有被赋值时,JavaScript会将其默认值设置为undefined
let x;
console.log(x); // 输出: undefined

2. undefined的用法

  • undefined通常用来表示一个变量尚未初始化,或者一个对象属性不存在。
let person = {
    name: "Alice"
};
​
console.log(person.age); // 输出: undefined(属性不存在)

3. 与null的区别

  • undefinednull都是表示“无”或“空”的值,但它们在语义上有所不同:

    • undefined表示变量已声明但未赋值,或对象属性不存在。
    • null是一个显式的空值,表示一个有意的无值状态。
let a; // a 是 undefined
let b = null; // b 是 nullconsole.log(a); // 输出: undefined
console.log(b); // 输出: null
  1. typeof运算符

使用typeof运算符可以检测一个变量是否为undefined

let y;
console.log(typeof y); // 输出: "undefined"

5. 与undefined的比较

  • 在进行比较时,undefinednull相等,但不严格相等:
console.log(undefined == null); // 输出: true
console.log(undefined === null); // 输出: false
  1. 函数返回值
  • 如果一个函数没有显式地返回值,它的返回值将是undefined
function doNothing() {}
​
let result = doNothing();
console.log(result); // 输出: undefined

总结: undefinedJavaScript中一个重要的原始数据类型,主要用于表示变量未初始化或对象属性不存在

2.5 object类型

JavaScript中,object类型是用于存储复杂数据结构和实体的基本数据类型。对象是一组键值对的集合,其中键(也称为属性)是字符串,值可以是任何类型,包括其他对象。以下是关于object类型的详细介绍:

  1. 对象的定义

对象可以通过对象字面量、构造函数或Object类来创建。

  • 对象字面量

    let person = {
        name: "Alice",
        age: 30,
        isStudent: false
    };
    
  • 使用构造函数

    let car = new Object();
    car.brand = "Toyota";
    car.model = "Camry";
    
  • 使用类(ES6引入)

    class Person {
        constructor(name, age) {
            this.name = name;
            this.age = age;
        }
    }
    ​
    let alice = new Person("Alice", 30);
    
  1. 访问对象属性

可以通过点语法或方括号语法访问对象的属性:

console.log(person.name); // 输出: "Alice"
console.log(person["age"]); // 输出: 30
  1. 修改对象属性

可以直接修改对象的属性或添加新的属性:

person.age = 31; // 修改属性
person.city = "New York"; // 添加新属性
console.log(person); // 输出: { name: "Alice", age: 31, isStudent: false, city: "New York" }
  1. 对象方法

对象可以包含方法,即以函数作为属性的值:

let person = {
    name: "Alice",
    greet: function() {
        console.log("Hello, " + this.name);
    }
};
​
person.greet(); // 输出: "Hello, Alice"
  1. 内置对象

JavaScript提供了一些内置对象,例如:

  • Array:用于存储有序的元素集合。

    let fruits = ["apple", "banana", "cherry"];
    
  • Date:用于处理日期和时间。

    let now = new Date();
    
  • RegExp:用于处理正则表达式。

    let pattern = /[a-zA-Z]+/;
    
  1. 对象的遍历

可以使用for...in循环遍历对象的属性:

for (let key in person) {
    console.log(key + ": " + person[key]);
}
  1. this关键字

在对象的方法中,this关键字指向调用该方法的对象:

let obj = {
    value: 42,
    getValue: function() {
        return this.value; // this指向obj
    }
};
console.log(obj.getValue()); // 输出: 42
  1. 对象的比较

JavaScript中,对象是引用类型,两个对象的比较是基于引用而不是值:

let obj1 = { name: "Alice" };
let obj2 = { name: "Alice" };
let obj3 = obj1;
​
console.log(obj1 === obj2); // 输出: false(不同的引用)
console.log(obj1 === obj3); // 输出: true(相同的引用)

总结:object类型是JavaScript中非常重要的基本数据类型,广泛用于创建和管理复杂数据结构。

2.6 null类型

JavaScript中,null是一个特殊的原始数据类型,表示“无”或“空”值。它通常用于显式地指示一个变量或对象属性不应有值。以下是关于null类型的详细介绍:

  1. null的定义

null是一个单一的值,用于表示“没有值”或“未知的值”。通常用来初始化一个变量,表示它目前不指向任何对象或数据。

let emptyValue = null;
console.log(emptyValue); // 输出: null
  1. undefined的区别
  • nullundefined

    都表示无值,但它们的语义不同:

    • undefined表示一个变量被声明但未赋值,或对象的属性不存在。
    • null则是一个显式的值,表示一个有意的“无”状态。
let a; // a 是 undefined
let b = null; // b 是 nullconsole.log(a); // 输出: undefined
console.log(b); // 输出: null
  1. 类型检测

使用typeof运算符检测null时,会返回"object",这是JavaScript的一个历史遗留问题:

console.log(typeof null); // 输出: "object"
  1. 用途

null常用于以下场景:

  • 初始化变量:当你希望一个变量在某个时候可能会持有对象,但当前没有值时。
let user = null; // 用户尚未登录
  • 表示函数的返回值:可以用null来表示函数未能返回有效对象。
function findUser(id) {
    return null; // 用户未找到
}
  1. 在条件语句中的使用

null被视为假值(falsy),在条件判断中会被转换为false

if (null) {
    console.log("这个不会被执行");
} else {
    console.log("这个会被执行"); // 输出: "这个会被执行"
}
  1. 对比与类型判断

在比较时,nullundefined相等,但不严格相等:

console.log(null == undefined); // 输出: true
console.log(null === undefined); // 输出: false

总结: nullJavaScript中表示“无”或“空”状态的重要类型,通常用于指示变量没有值或未指向任何对象。

欲知后事如何,且听下回分解...