js基本数据类型和引用类型的区别详解-笔记
原文参考http://mp.weixin.qq.com/s/apFyUgqT5N-bsDUjP4Eryg
笔记总结
首先记住js中的基础数据类型
undefined,null,boolean,string,number
1基本数据类型
一基本数据类型的值是不可变的
var name = 'hello';
name.substr(2);// 此处sunstr方法返回新的字符串
console.log(name);// ‘hello’
var name = 'hello2';
name = 'world'
console.log(name);// 输出'world',可以理解现在栈中新有一块地址存储的是world,但是它的标识符是name,现在name代表的是world了。
二基本数据类型不可以添加属性和方法
三基本数据类型是简单赋值
var a = 10;
var b = a;// 这里理解是把10给了b
b = 15;
console.log(a);// 10
console.log(b);// 15
a和b有各自的存储空间
四基本数据类型是值比较
var a = '{}';
var b = '{}';
console.log(a == b);// 这里是字符串的比较,所以返回是true
五基本数据类型存放在栈中。
栈里存放的是一个字典
左侧是Key(变量名)右侧是value(真正的值)
2引用类型
一值是可以改变的
var o = {x:1};
o.x = 2;// console.log(o.x)已经变为2
二可以添加属性和方法
var obj = {};
obj.name='zs';
obj.getName=function(){console.log(obj.name)}
三引用类型赋值的是对象引用
var a = {};
var b = a;// b在栈中新建了一个地址,指向了a在堆中存储的数据
a.name = 'change';// a的更改会影响b的数值
console.log(a.name);// change
console.log(b.name);// change
四引用类型比较的是引用地址
var a = {};
var b = {};
console.log(a == b);// 在内存中地址是动态分配的,这里返回false
五引用类型数据会保存在栈和堆中
var a = {name:'zs'}
栈中保存的是a和一个分配的地址
堆中保存的是{name:'zs'}
基本包装类型即Number,Boolean,String(首字母大写,现在看成是一个类型)
js本身自带的。
var str1 = 'hello';
实际在js内部执行了下面操作:
var str1 = new String('hello');
var str2 = str1.substr(2);
str1 = null;// 这里就释放了str1与值得关联,在垃圾收集器回收时候,自动回收。因为自动执行了这一步所以基本数据类型无法添加属性和方法。只有基本包装类型才会有这一步。
js基本数据类型和引用类型的区别详解-笔记的更多相关文章
- JavaScript 基本数据类型和引用类型的区别详解
js基本数据类型: js基本数据类型包括:undefined,null,number,boolean,string.基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值 1. 基本数据类 ...
- mysql数据类型double和decimal区别详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt336 实数是带有小数部分的数字.然而,它们不只是为了存储小数部分,也可以使用 ...
- JQ的offset().top与js的offsetTop区别详解
一.前言 最近在做一个图片懒加载的插件,就纵轴(Y轴)而言,我需要时时获取图片的上偏移量,好判断是否已进入视图区域,而我所理解的是offsetTop应该是跟offset().top一样的,然后陷入了因 ...
- js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题
js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...
- 检索01-c#中基本数据类型和引用类型的区别
1.基本定义 基本数据类型包括:整型.浮点型.字符型.结构体.布尔型.日期时间.枚举类型等 引用类型包括:字符串.类.数组.接口等 堆定义:是一种特殊的树形数据结构,每个结点都有一个值,一般由程序员分 ...
- JQ的offset().top与JS的getBoundingClientRect区别详解,JS获取元素距离视窗顶部可变距离
壹 ❀ 引 我在 JQ的offset().top与js的offsetTop区别详解 这篇博客中详细分析了JQ方法offset().top与JS属性offsetTop的区别,并得出了一条offset( ...
- GoLang基础数据类型--->字典(map)详解
GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是 ...
- HTTP POST GET 本质区别详解
HTTP POST GET 本质区别详解 一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Ht ...
- javascript中=、==、===区别详解
javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...
随机推荐
- 搭建USB摄像头转RTSP服务器的多种方法
USB摄像头与网络摄像头相比,可选择范围广.种类多.成本低,但是实际使用时需要通过rtsp流来访问,起到直播的效果,因此在摄像头采集终端上构建rtsp流媒体服务器,将USB摄像头数据转化为rtsp,可 ...
- tomcat增加运行内存
内容为: set JAVA_OPTS=%JAVA_OPTS% -server -Xms2048m -Xmx2048m -XX:PermSize=212M -XX:MaxPermSize=512m 在m ...
- python全栈开发学习_day2_语言种类及变量
一.编程语言的分类及python相对其他语言的优势 1)三大语言种类及细分 1.机器语言(低级语言):直接用计算能够理解的二进制进行编写,直接控制计算机硬件. 优点:执行效率高. 缺点:开发效率低,跨 ...
- 在使用Vue搭建前端服务器时,路由出现#号的解决办法
路由模式解析 这里要讲vue-router的路由模式,首先要了解的一点就是路由是由多个URL组成的,使用不同的URL可以相应的导航到不同的位置.如果有进行过服务器开发或者对http协议有所了解就会知道 ...
- docker jenkins使用(二)
jenkins的安装很简单,但是jenkins的初次使用却很头疼.对于小白来说有点不太明白 背景: 开发更新app需要很多步骤,生成jar包.上传服务器.更新启动程序,如果有很多服务器,那么需要做好多 ...
- Word常用定义的变量
unit U_WordConst; interface {*******Word窗体状态************} const wdWindowStateNormal = $00000000; ...
- SpringBoot项目中获取applicationContext对象
ApplicationContext 对象是Spring开源框架的上下文对象实例,也就是我们常说的Spring容器,一般情况下我们是不用手动来管理它,而是由Spring框架自己来维护bean之间的关系 ...
- xamarin RunOnUiThread
One of the keys to maintaining a responsive GUI is to do long-running tasks on a background thread s ...
- Jmeter测试计划中的元素
测试计划中的元素(elements of a test plan) 本节描述测试计划不同的部分. 最小测试将包括测试计划.线程组和一个或多个采样器. 1 测试计划(Test Plan) 测试计划对象有 ...
- Robot Framework(AutoItLibrary库关键字介绍)
AutoItLibrary库关键字 AutoItLibrary 的对象操作大体上有几大主要部分,Window 操作.Control 操作.Mouse 操作.Process操作.Run 操作.Reg 操 ...