javascript基础数据类型与引用类型
javascript一共有6种数据类型
有5种基本类型:Null,String Number,Boolean,Undefined
和一种引用类型Object
基础类型在内存中存在于栈空间中,例如 var a=20;则在栈空间中开辟了一个a=20的空间
而Object类型在栈中保存的只是一个内存地址,通过这个地址可以找到堆空间中new出来的对象
具体如下图:

其中数组对象,函数(js中函数也是对象)日期,正则等等都是通过Object对象衍生出来的。
如何检测一个对象的类型呢?
对于基础类型来说,我们使用typeof关键字来检验
var a="junjun";
console.log(a typeof String)//true
对于引用类型来说使用typeof就不满意了,例如数组是引用类型,正则也是引用类型,我们要知道一个对象是不是数组对象,我们需要使用instanceof来检测
var b=[1,2,3];
b instanceof Array 返回true
关于引用类型必须强调的是引用类型在栈内存中保存的只是一个地址,下面实例说明:
var a={};
a.age=12;
var b=a;
b.age=13;
console.log(a.age)
答案是多少呢?答案是13
我们画内存图来分析

var a={}后在堆内存中开辟了一块空间,保存age=12
var b=a a实际上保存的只是一个地址,把这个地址赋值给b,因为b和a指向的是同一个地址,所以b也能访问堆里面的值;b.age=13则重新更改了里面属性,所以a再来访问则是访问修改后的属性。
这个题是一个比较经典的易错题
javascript基础数据类型与引用类型的更多相关文章
- js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题
js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...
- JavaScript基础——数据类型
JavaScript使用数据类型来确定如何处理被分配给一个变量的数据.变量的类型决定了你可以对变量进行什么操作,如循环或者执行.下面描述了最常用的变量类型. 字符串(String):此数据类型将字符数 ...
- JavaScript 基本数据类型和引用类型的区别详解
js基本数据类型: js基本数据类型包括:undefined,null,number,boolean,string.基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值 1. 基本数据类 ...
- JavaScript基础数据类型(一)
动态类型 JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定.这也意味着你可以使用同一个变量保存不同类型的数据: var foo = ...
- Javascript基础--数据类型
一.基本数据类型 1.字符类型:表示字符的类型,例:'aaa',"aaaa",'123456',''(空字符) 2.数字类型:表示数字的类型,例:0,1,3.1415936等 特殊 ...
- JavaScript基础数据类型
一.数值 1.JavaScript不区分整型和浮点型,就只有一种数字类型 2.还有一种NaN,表示不是一个数字(Not a Number) eg: parseInt("ABC") ...
- JavaScript基础入门 - 01
JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码, ...
- 新手怎么学JS?JavaScript基础入门
新手应该怎么学习JS?JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写Ja ...
- JavaScript基础入门01
JavaScript能用来做什么? 页面分为:结构.样式.行为. JavaScript的组成: ECMAScript.BOM.DOM ECMAScript是一个标准,它 ...
随机推荐
- 【Atom】在一个中/大型项目中,那些好用而强大的atom功能
作为一个学生党,一开始使用atom时候并没有意识到atom一些小功能的巨大作用,直到自己实习参与了项目,才知道这些功能在一个项目中是能极大提高工作效率的开发利器 下面是一位不愿意透露其姓名的彭 ...
- 封装类(Merry May Day to all you who are burried in work ~)---2017-05-01
1.为什么要使用封装类? (1) 可以多个地方调用,避免代码的冗余 (2)面向对象三大特点之一,安全性高 2.代码及注意点? <?php class DB //文件名为:DB.class.php ...
- 金山助手流氓软件-被进程sjk_daemon.exe坑死
修改完Android工程代码,进入调试阶段时DDMS中报错:The connection to adb is down, and a severe error has occured. 由于之前也碰到 ...
- UEditor上传图片到七牛C#(后端实现)
由于个人网站空间存储有所以选择将图片统一存储到七牛上,理由很简单 1 免费10G 的容量 ,对个人网站足够用 2 规范的开发者文档 和完善的sdk(几乎所有热门语言sdk) 整体思路 图片上传七 ...
- 基于python的爬虫(一)
抓取网页 python核心库 urllib2 实现对静态网页的抓取,不得不说,"人生苦短,我用python"这句话还是有道理的,要是用java来写,这估计得20行代码 (对不住了博 ...
- C语言实验单片机串口发送int型数据
void SendIint(int n)reentrant { unsigned char s; while(n!=0) { s=(unsigned char)n%10+48; SendByte(s) ...
- JSON的使用小结
JSON中存储的是key:value,其实在编程的时候我们会遇到很多都是key:value的形式.比如:map,java对象(一个对象的一个属性只会有一个值),数据库中key:value对应着里面存储 ...
- .Net Core应用搭建的分布式邮件系统设计
本篇分享的是由NetCore搭建的分布式邮件系统,主要采用NetCore的Api和控制台应用程序,由于此系统属于公司的所以这里只能分享设计图和一些单纯不设计业务的类或方法: 为什么要在公司中首例采用N ...
- 基于dubbo的SSM(Spring,SpringMvc,Mybatis)整合的Maven多工程(下)
上篇是SSM的maven单工程(http://www.cnblogs.com/yuanjava/p/6748956.html).中篇是 SSM的maven多工程(http://www.cnblogs. ...
- 使用ThreadLocal实现的读写分离在迁移后的偶发错误
最近莫名的会有错误日志,说有写操作因为走了读库而报了read only的异常,由于并没有造成应用使用的问题,开始我以为哪的配置错误就没当回事让程序员自己去查了,然而... 背景:之前的博客里提到过,读 ...