共计 2009 个字符,预计需要花费 6 分钟才能阅读完成。
为感激大家的反对,特发福利红包(支 F 宝口令红包),点击返回支付:Gitee
JavaScript 中的数据类型能够分为根本类型和援用类型
根本类型
- 数字类型(number):示意数值,包含整数和浮点数。
- 字符串类型(string):示意文本字符串,能够蕴含任意字符。
- 布尔类型(boolean):示意 true 或 false。
- 空值类型(null):示意一个空值。
- 未定义类型(undefined):示意一个未定义的值。
- 符号类型(symbol):示意惟一的、不可变的值,用于对象属性的惟一标识符。
援用类型
- 对象类型(object):示意简单的数据结构,能够蕴含多个属性和办法。
- 数组类型(array):是对象类型的一种非凡模式,用于存储和操作多个值的有序汇合。
- 函数类型(function):也是对象类型的一种非凡模式,能够接管参数、执行代码块并返回后果。
- 日期类型(date):用于示意日期和工夫的对象。
- 正则表达式类型(regexp):用于解决字符串的模式匹配。
- 谬误类型(error):示意程序执行过程中的谬误。
在 JavaScript 中,根本类型的值是存储在栈内存的变量中,而援用类型的值则是存储在堆内存中的对象,变量实际上是对象的援用。因而,对于援用类型的值,变量存储的是对象的地址,而不是对象自身。
Question 1
如何了解根本类型和援用类型,次要从变量类型(根本类型和援用类型)、申明、赋值、复制、存储几方面详细描述
- 变量类型:根本类型的变量间接存储值,而援用类型的变量存储的是对象的援用。
- 申明:申明根本类型变量时,应用 var、let 或 const 关键字,后跟变量名和初始值;申明援用类型变量时,只需应用 var、let 或 const 关键字和变量名,不须要为其调配初始值,初始值能够在前面赋值。
- 赋值:根本类型变量的赋值是将一个值复制到变量中,而援用类型变量的赋值是将一个对象的援用复制到变量中。
- 复制:当将一个根本类型变量复制到另一个变量时,会创立一个新的变量,它的值与原变量雷同;而当将一个援用类型变量复制到另一个变量时,只是复制了对象的援用,两个变量都指向同一个对象。
-
存储:根本类型变量的值存储在栈内存中,援用类型变量存储在堆内存中,变量名存储在栈内存中,变量名指向对象在堆内存中的地址。
例如,申明一个根本类型变量:
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 多平台公布