环球设计网站,网站建设教程哪家公司好,h5除了易企秀还有哪些,腾讯街景地图实景在JavaScript中#xff0c;根据数据存储的方式不同#xff0c;变量可以分为两大类#xff1a;简单类型#xff08;也称为基本数据类型或原始类型#xff09;和复杂类型#xff08;也称为引用数据类型#xff09;。理解这两者的区别对于编写高效且无误的代码至关重要。本…在JavaScript中根据数据存储的方式不同变量可以分为两大类简单类型也称为基本数据类型或原始类型和复杂类型也称为引用数据类型。理解这两者的区别对于编写高效且无误的代码至关重要。本文将详细介绍JavaScript中的简单类型和复杂类型并探讨它们各自的特性及其应用场景。
简单类型基本数据类型
简单类型是指那些直接存储在栈内存中的数据类型其值直接存储在变量的位置上。JavaScript中有六种简单类型
undefinednullbooleannumberstringsymbol (ES6新增)
特性 按值传递当简单类型的值被作为参数传递给函数时实际上是创建了一个副本这意味着对参数的任何修改都不会影响原始值。 function changeValue(x) {x 10;
}
let a 5;
changeValue(a);
console.log(a); // 输出: 5 比较方式两个简单类型的变量通过运算符进行比较时只有当两者的内容完全相同时才会返回true。 console.log(5 5); // 输出: true
console.log(hello hello); // 输出: true
常见用法
布尔值用于控制流程如条件语句和循环。数字用于数学计算。字符串用于文本处理。**未定义undefined**表示尚未赋值的变量。**空值null**表示有意设置为空的值。**符号Symbol**提供了一种创建唯一标识符的方法通常用于对象属性键。 复杂类型引用数据类型
复杂类型指的是那些存储在堆内存中的数据类型变量实际上保存的是指向实际数据的一个引用地址。JavaScript中最常见的复杂类型包括
ObjectArrayFunction其他自定义对象
特性 按引用传递当一个复杂类型的值被作为参数传递给函数时传递的是该对象的引用地址而不是副本。因此在函数内部对该对象所做的任何更改都会反映到原始对象上。 function modifyObject(obj) {obj.name World;
}
let obj { name: Hello };
modifyObject(obj);
console.log(obj.name); // 输出: World 比较方式两个复杂类型的变量通过运算符进行比较时只有当两者引用的是同一个对象时才会返回true。 let obj1 { name: Alice };
let obj2 obj1;
console.log(obj1 obj2); // 输出: truelet obj3 { name: Alice };
console.log(obj1 obj3); // 输出: false
常见用法
对象用于封装数据和方法支持面向对象编程。数组用于存储有序的数据集合。函数不仅可以作为过程调用还可以作为一等公民被赋值给变量、作为参数传递或返回值。 实际应用案例
案例1简单类型的比较
let num1 10;
let num2 10;
console.log(num1 num2); // 输出: truelet str1 test;
let str2 test;
console.log(str1 str2); // 输出: true
案例2复杂类型的比较
let arr1 [1, 2, 3];
let arr2 [1, 2, 3];
console.log(arr1 arr2); // 输出: falselet obj1 { key: value };
let obj2 obj1;
console.log(obj1 obj2); // 输出: true
案例3浅拷贝 vs 深拷贝
由于复杂类型是按引用传递的直接赋值不会复制对象本身而是复制了引用。为了创建对象的独立副本我们需要使用深拷贝技术。
let original { a: 1, b: { c: 2 } };
let shallowCopy Object.assign({}, original);
let deepCopy JSON.parse(JSON.stringify(original));original.b.c 3;console.log(shallowCopy.b.c); // 输出: 3
console.log(deepCopy.b.c); // 输出: 2 结语
感谢您的阅读如果你有任何问题或想分享自己的经验请在评论区留言交流