前言
作为JavaScript的入门知识点,Js数据类型在整个JavaScript的学习过程中其实尤为重要。最常见的是边界数据类型条件判断问题。
我们将通过这几个方面来了解数据类型:
代码语言:text复制概念
检测方法
转换方法
概念
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 = {
代码语言:text复制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