JavaScript简单类型和复杂类型回顾数据类型
- 简单数据类型 / 基本数据类型 / 值类型
- Number
- String
- Boolean
- Null
- Undefined
- 复杂数据类型 / 引用类型
- Object
- 数组
- 简单类型存储在内存中的栈上
- 复杂类型存储在内存中的堆上
var n1 = 10;// 1、在栈中开辟一块内存空间,存储一个数值10// 2、将 n1 变量的值指向该内存空间var n2 = n1;// 1、在栈中又开辟一块内存空间// 2、把 n1 指向的数值10复制一份放进新开辟的内存空间中// 3、将 n2 变量的值指向新开辟的内存空间n1 = 20;// 变量 n1 的值发生变化,n2 的值不会发生变化复杂类型在内存中存储function Object(name, age) {this.name = name;this.age = age;this.sayHi = function () {console.log(this.name + ":hello")}}var o1 = new Object('lisi', 18);// 1、 在堆上开辟一块内存空间,存储o1对象// 2、 在栈上开辟一块内存空间,存储一个二进制地址,地址指向堆上的p1对象// 3、 变量o1指向栈上开辟的内存空间(二进制地址)var o2 = o1;// 1、在栈中又开辟一块内存空间// 2、把o1指向的二进制地址复制一份放进新开辟的内存空间// 3、将o2指向新开辟的内存空间o1.name = 'zhangsan';// o1对象的name属性更改为 zhangsanconsole.log(o2.name); // zhangsan// o2对对象的name属性也更改为 zhangsan,因为指向的都是栈上的同一个二进制地址,二进制地址指向的是同一个o1对象简单类型作为函数的参数function fn() {a = a + 1;b = b + 1;console.log(a);console.log(b);}var x = 10;// 1、在栈中开辟一块内存空间,存储一个数值10// 2、将 x 变量的值指向该内存空间var y = 20;// 1、在栈中开辟一块内存空间,存储一个数值20// 2、将 y 变量的值指向该内存空间fn(x, y); // 11 21// 1、在栈中又分别开辟两块内存空间// 2、把 x 和 y 指向的数值10和数值20分别复制一份放进新开辟的两块内存空间中// 3、将 a 变量的值 和 b 变量的值分别指向对应的新开辟的内存空间// 4、a的值和b的值经过运算重新变为 11 和 21console.log(x); // 10// x 的值还是10console.log(y); // 20// y 的值还是20复杂类型作为函数的参数function Person(name, age) {this.name = name;this.age = age;this.sayHi = function () {console.log(this.name + "Hello!");}}var p = new Person("zhangsan", 18);function fn(person) {person.name = "lisi";}fn(p);console.log(p.name); // lisifunction Person(name, age) {this.name = name;this.age = age;this.sayHi = function () {console.log(this.name + "Hello!");}}var p = new Person("zhangsan", 18);function fn(person) {person.name = "lisi";person = new Person("wangwu", 20)console.log(person.name) // wangwu}fn(p);console.log(p.name); // lisifunction sort(array) {for (var i = 0; i < array.length; i++) {var isSort = true;for (var j = 0; j < array.length - 1 - i; j++) {if (array[j] < array[j + 1]) {isSort = false;var tmp = array[j];array[j] = array[j + 1];array[j + 1] = tmp;}}if (isSort) {break;}}// return array; 可以不用写return返回值,因为数组是一个复杂数据类型,具有复杂数据类型函数传参的特性}var arr = [10, 51, 81, 2, 5, 9, 57, 58];sort(arr);var r = sort(arr);console.log(r); // undefined 没有写return就没有返回值,所以返回undefinedconsole.log(arr); // [81, 58, 57, 51, 10, 9, 5, 2]【JavaScript基础——简单类型和复杂类型】本文来自博客园,作者:车泽泽,转载请注明原文链接:https://www.cnblogs.com/chezeze/p/14973596.html- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
