乐趣区

关于程序员:JavaScript数据类型及差异说明

为感激大家的反对,特发福利红包(支 F 宝口令红包),点击返回支付:Gitee

JavaScript 中的数据类型能够分为根本类型和援用类型

根本类型

  1. 数字类型(number):示意数值,包含整数和浮点数。
  2. 字符串类型(string):示意文本字符串,能够蕴含任意字符。
  3. 布尔类型(boolean):示意 true 或 false。
  4. 空值类型(null):示意一个空值。
  5. 未定义类型(undefined):示意一个未定义的值。
  6. 符号类型(symbol):示意惟一的、不可变的值,用于对象属性的惟一标识符。

援用类型

  1. 对象类型(object):示意简单的数据结构,能够蕴含多个属性和办法。
  2. 数组类型(array):是对象类型的一种非凡模式,用于存储和操作多个值的有序汇合。
  3. 函数类型(function):也是对象类型的一种非凡模式,能够接管参数、执行代码块并返回后果。
  4. 日期类型(date):用于示意日期和工夫的对象。
  5. 正则表达式类型(regexp):用于解决字符串的模式匹配。
  6. 谬误类型(error):示意程序执行过程中的谬误。

在 JavaScript 中,根本类型的值是存储在栈内存的变量中,而援用类型的值则是存储在堆内存中的对象,变量实际上是对象的援用。因而,对于援用类型的值,变量存储的是对象的地址,而不是对象自身。

Question 1

如何了解根本类型和援用类型,次要从变量类型(根本类型和援用类型)、申明、赋值、复制、存储几方面详细描述

  1. 变量类型:根本类型的变量间接存储值,而援用类型的变量存储的是对象的援用。
  2. 申明:申明根本类型变量时,应用 var、let 或 const 关键字,后跟变量名和初始值;申明援用类型变量时,只需应用 var、let 或 const 关键字和变量名,不须要为其调配初始值,初始值能够在前面赋值。
  3. 赋值:根本类型变量的赋值是将一个值复制到变量中,而援用类型变量的赋值是将一个对象的援用复制到变量中。
  4. 复制:当将一个根本类型变量复制到另一个变量时,会创立一个新的变量,它的值与原变量雷同;而当将一个援用类型变量复制到另一个变量时,只是复制了对象的援用,两个变量都指向同一个对象。
  5. 存储:根本类型变量的值存储在栈内存中,援用类型变量存储在堆内存中,变量名存储在栈内存中,变量名指向对象在堆内存中的地址。

    例如,申明一个根本类型变量:

    var num = 10;
    

    此时,变量 num 存储的是数字 10 的值,它的值间接存储在栈内存中。

    而申明一个援用类型变量:

    var obj = {name: 'John', age: 30};
    

    此时,变量 obj 存储的是对象在堆内存中的地址,它的值存储在堆内存中。当咱们应用 obj 拜访对象属性时,实际上是通过援用拜访对象属性的。如果将 obj 赋值给另一个变量 newObj,那么 newObj 也会指向同一个对象,它们共享同一块堆内存空间。

总之,根本类型和援用类型在变量类型、申明、赋值、复制和存储等方面存在差别,开发者应该依据具体的利用场景,正当地抉择应用根本类型或援用类型。

Question 1

null 和 undefined 的区别

在 JavaScript 中,null 和 undefined 是两个非凡的原始值,它们都示意“无”,但在某些状况下它们有一些轻微的差异。

首先,undefined 示意一个未定义的值,通常是因为变量曾经申明但没有被初始化赋值,或者对象没有定义某个属性。例如:

let x;
console.log(x); // undefined

const obj = {};
console.log(obj.foo); // undefined

相同,null 示意一个空的值,即便存在一个变量或属性,但其值为空。例如:

const x = null;
console.log(x); // null

const obj = {foo: null};
console.log(obj.foo); // null

另一个区别是,undefined 是一个全局变量,它的值能够被从新赋值为其余值。而 null 不是一个变量,它只是一个关键字,示意一个空值。

undefined = 1;
console.log(undefined); // 1

null = 1; // TypeError: Cannot assign to read only property 'null' of object '#<Window>'

此外,在应用 == 运算符时,null 和 undefined 是相等的,但在应用 === 运算符时,它们是不相等的。起因是 == 运算符在比拟两个值时会进行类型转换,而 === 运算符不会进行类型转换。例如:

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

总的来说,null 和 undefined 都示意空值,但在应用时须要留神它们的细微差别。通常状况下,咱们倡议在初始化变量或属性时应用 null,而在判断变量或属性是否未定义时应用 undefined。

本文由 mdnice 多平台公布

退出移动版