标签:程序 运行时 mamicode 过程 理解 数组 存储 编译 声明
数组:引用/复合数据类型
数组里面可以存储任何的数据类型,例如数组、字符串、数字、布尔值,是一个变量,过程中可以被改变。
数组的存储是分为两个部分:程序运行段和堆
程序运行段(编译之后分配的空间大小不可改变):存储着数组的地址
堆(空间大小可以改变):存储着数组的元素,例如数组、字符串、数字、布尔值
程序运行时是通过程序运行段中存储的数组地址找到堆中对应的元素。
var arr3 = [10,20,30];
var arr1 = ["abc", 2,true,arr3];
var arr2 = arr1; ---只是把arr1的地址值赋给arr2,arr1和arr2指向的是同一个地址
arr2[0] = 10;
alert(arr1); ---10, 2,true,10,20,30
alert(arr2); ---10, 2,true,10,20,30
如果要声明一个和arr1一样的数组,使用concat().
var arr2 = arr1.concat() ---concat()不改变arr1,而是返回一个和arr1一样的数组给arr2,其地址也不一样。
可以试试运行下面代码理解:
var arr1 = [1, 2,3, 4, 5, 6];
var arr2 = arr1.concat();
arr2[0] = 10;
alert(arr1); ---1,2,3,4,5,6
alert(arr2); ---10,2,3,4,5,6
字符串:带单引号或双引号的
在程序运行段里,存储的是字符串的地址,而字符串的值存储在只读数据段里,通过存储在程序运行段的地址找到只读数据段中的值。
在只读数据段中存储的值是单个字符分割存储的,可通过str[i]下标访问获得单个字符
var str = "abcd";
var arr = str.split(""); --- 返回一个存储着字符串每一个单个字符的数组 a,b,c,d
alert(arr);
标签:程序 运行时 mamicode 过程 理解 数组 存储 编译 声明
原文地址:https://www.cnblogs.com/day-day-up-007/p/12527168.html