JavaScript值类型

JavaScript是值决定类型(动态语言),其他大部分语言是类型决定值

原始值:stack(放栈里)

Number String Boolean undefined null

引用值:heap(放堆里)

array Object function ... date RegEx

引用值和原始值唯一的不同是赋值形式的不同


原始值:

var a = 10;

var b =  a;//a的值放b里面去

a = 20;

document.write(b);//10

第一个值放第二个值里面,第一个值(a)改变,第二个值(b)不变

stack 拷贝(cope)所以互相不影响JavaScript值类型_第1张图片

var num = 100;

num = 200;正确的栈内写法哟 JavaScript值类型_第2张图片


 


引用值:

var arr = [1];

var arr1 = arr;

arr.push(2);

document.write(arr);//1,2

document.write(arr1);//1,2

第一个值放第二个值里面,第一个值改变,第二个值也改变

heap 指针 拷贝的地址 指向同一个房间

JavaScript值类型_第3张图片

注意!!!:

var arr = [1];

var arr1 = arr;

arr = [1,3];开辟新的房间呀!!

document.write(arr1);//1,2

JavaScript值类型_第4张图片


 上面的数组并不是这样子存储在堆里面的 这里是为辣好理解

我的稿子都是看课的笔记,渡一姬成

 

 

 

你可能感兴趣的:(javascript,前端)