面试官:JS的数据类型你了解多少?(一万字总结)

前言

作为JavaScript的入门知识点,Js数据类型在整个JavaScript的学习过程中其实尤为重要。最常见的是边界数据类型条件判断问题。

我们将通过这几个方面来了解数据类型:

概念
检测方法
转换方法

概念

undefined、Null、Boolean、String、Number、Symbol、BigInt为基础类型;

Object为引用类型,其中包括Array、RegExp、Date、Math、Function这几种常见的类型。
在这里插入图片描述

数据类型大致分为两类来进行存储。

基础类型存储在栈内存,被引用或拷贝时,会创建一个完全相等的变量。

引用类型存储在堆内存,存储的是地址,多个引用指向同一个地址,这里会涉及一个“共享”的概念。
在这里插入图片描述

示例题一:

let a = {
name:“maomin”,
age:“20”
}
let b = a;
console.log(a.name); // “maomin”
b.name = “haojie”;
console.log(a.name); // “haojie”
console.log(b.name); // “haojie”

这里就体现了引用类型的“共享”的特性,即这两个值都存在同一块内存中共享,一个发生了改变,另外一个也随之跟着变化。

示例题二:

let a = {

name: ‘maomin’,

age: 20

}

function change(o) {
o.age = 24;

o = {

name: 'haojie',

age: 30

}

return o;

}

let b = change(a);

console.log(b.age); // 30

console.log(a.age); // 24

函数传参进来的 o,传递的是对象在堆中的内存地址值,通过调用 o.age = 24确实改变了 a 对象的 age 属性;但是代码中{name:‘haojie’,age:30}却又把 o 变成了另一个内存地址,将{name: ‘haojie’, age: 30}存入其中,最后返回 b 的值就变成了 {name: ‘haojie’, age: 30}。

其实,上面两个例子很显明地阐述了在Vue.js组件中data属性必须是一个函数而不是一个对象,每个实例可以维护一份被返回对象的独立的拷贝。

 

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/119945918

posted @ 2022-06-23 12:15  忘川信使  阅读(10)  评论(0编辑  收藏  举报