js基本语法之 值类型(数据类型)(变量类型)
2018-08-13 07:46:08来源:博客园 阅读 ()
一.不可改变的原始值(栈数据)(五个)
数字(number),字符串(string),布尔值(boolean),undefined,null
其中;undefined是未定义的意思,而null是空的意思,他们俩的区别在于,null有值,不过这个值是空值,而undefined是未定义,完全没有值的意思。null一般用作占位。
var a = 4; var b = a; a = 10; console.log(b);//4 //原始值是把一个值a放到另一个值b里面,改了第一个值a,第二个之值b不变
二.引用值(堆数据)
数组(array),对象(object),函数(function)
注意:只要对变量进行赋值就会进行内存的重新申请
1.
var arr = [1, 2]; var arr1=arr; arr.push(3); console.log(arr1); //[1, 2, 3] //引用值时把第一个值放到第二个值里面,改变第一个值,第二个值也改变
//引用值是在栈内存里面存放堆的地址,拷贝的是地址,所以改变了arr,实际上是改变了arr指向的地址内存放的内容,而arr和arr1指向同一个地址,故arr1也跟着变
地址 |
变量 |
存储值 |
0x0001 |
arr |
[1,2] [1,2,3] <--arr.push(3) |
0x0002 |
arr1 |
0x0001 |
2.
var arr = [1,2]; var arr1 = arr; arr = [1,3]; console.log(arr1);//[1,2]; //arr = [1,3]实际上是在堆内另建了一个地址,arr指向了新的地址,而arr1还是指向原来的地址,故arr1值不变
地址 |
变量 |
存储值 |
0x0001 |
arr |
[1,2] |
0x0002 |
arr1 |
0x0001 |
0x0003 |
arr |
[1,3] |
3.要避免使用连续赋值符号:下面举两个例子
var a = {n:1}; var b = a; a.n= a={m:1}; console.log(a);//{m:1} console.log(b);//{n:{m:1}}
1.var a = {n:1},在内存中申请两个地址,分别存放a和n;
2.var b = a;申请一个地址存放b,值指向a的地址;
3.a.n= a={m:1};
(1)(这里对变量进行了赋值,因此要重新申请内存)先申请了内存地址n(0x0004)和a(0x0005);由于n值占用了新的内存,故0x0001处 存储值由n:0x0002变为n:0x0004;
(2)赋值;a={m:1},申请m地址(0x0006),
因此:a : {m:0x0006}--->{m:1}
b: {0x0001}--->{n:0x0004}---->{ n:0x0005}---->{n:{m:0x0006}}--->{n:{m:1}}
地址 |
变量 |
存储值 |
0x0001 |
a (1) |
n:0x0002 n:0x0004 ---(1) |
0x0002 |
-n- (1) |
1 |
0x0003 |
b |
0x0001 |
0x0004 |
n (1) |
0x0005 |
0x0005 |
a (1) |
m:0x0006 (2) |
0x0006 |
m (2) |
1 (2) |
var a = {n:1}; var b = a; a={m:1};//a重新赋值,换了一个房间,b仍然指向原来的房间(地址) a.n =a; console.log(a);//{m:1,n:{m:1,n:{..}}}//一直循环 console.log(b);//{n:1}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:直播js的学习笔记day_04
下一篇:Js隐式转换笔记整理
- 浅谈JS的基础类型与引用类型 2020-02-29
- 详解Webstorm 新建.vue文件支持高亮vue语法和es6语法 2020-02-07
- 详解JSONObject和JSONArray区别及基本用法 2020-01-17
- javascript setinterval 的正确语法如何书写 2019-12-08
- jQuery语法总结和注意事项 2019-10-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash