JavaScript的值
概念
-
引用数据类型与基本数据类型
基本数据类型:
- number
- String
- Boolean
- null
- undefined
- symbol
引用数据类型:可以粗略的认为除上述类型意外的类型都是引用数据类型。
存储的问题
存储空间的划分
JS的内存空间分为栈(stack)、堆(heap)、池(一般也会归类为栈中)。
栈:
一般用来保存基本数据类型。
堆:
用来保存引用数据类型的实体。
池:
用来保存常量。
引用类型的存储与基本类型的存储
-
从内存的角度来看赋值过程
-
基本类型:在栈内开辟新的存储空间来保存值
var str1 = "str1"; var str2 = str1; str2 = "str2"; console.log(str2); console.log(str1);
-
引用类型:在栈内存储指针、在堆内存放实体
var str1=['Hello World']; var str2=str1; console.log(str2[0]); str1[0]='Hello'; console.log(str2[0]);
-
//数组转换为树形结构
function toTree(data) {
var result = [];
if (!Array.isArray(data)) {
return result
}
data.forEach(function (item){
delete item.children;
});
var map = {};
data.forEach(function (item) {
map[item.nodeId] = item;
});
data.forEach(function (item){
var parent = map[item.parent];
if (parent) {
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return result;
};