js的数据类型
关于js中的几大数据类型,估计大家都很熟悉:String、Number、Array、Bollean、Null、Undifine、Object;
从这其中,可以延伸出一个感念:基本数据类型和引用类型;
什么是基本数据类型呢?
String、Number、Bollean、Null、Undifine以及ES6新增的symbol,都是基本数据类型;
什么是引用类型?
Array、Object是引用类型;
这两者有什么区别?
在这里要复习内存中的栈和堆的概念,我们都知道计算机内存分为栈和堆:
栈是保存数值类型整体以及引类型的名称(地址)的地方,有点类似一个数组;
堆是保存引用类型的具体内容的地方;
我个人是那么理解的:
栈是用来保存小数据的地方,堆的空间比较大,用来保存一些占内纯多的数据。
String、Number等基本数据类型数据格式简单,所占内存小,因此,他们的名称(变量名)以及具体内容都可以放在栈里;
而array与object数据格式复杂,所占内存大,因此,把他们的名称(地址)寸放在栈中,他们的具体内容则放在堆中。
所以,浏览器在读取内存时,先从栈里开始找,如果是基本数据类型,则可获取名称及内容全部,如果是引用类型,则是先获取它的地址,再根据地址的指向,找到在堆中的具体内容。
因此:
var a = 10;
var b = a;
b = 20;
console..log(a);//10;
基本数据类型,把a的数据拷贝一份,赋值给b,a和b完全独立,所以改变b的值,对a没有影响;
然而:
var obj1 = new Object();
obj1.name = "老王";
var obj2 = obj1;
obj2.name = "小丁丁";
console.log(obj1.name);//"小丁丁";
引用类型,在复制时,只是拷贝了obj1的地址,赋值给了obj2,obj1与obj2都指向堆中的同一个位置,所以,改变他们其中任何一个的属性或方法,实际上改变的是堆中同一个位置的值,所以obj2.name改变了,obj1.name也同样改变了。
以上为我的个人愚见,如果有不对的地方请指出来,我需要各位大神们的指点~~
js的数据类型的更多相关文章
- JavaScript知识 一、JS的数据类型
一.JS的数据类型 1.基本类型 JS共有5大基本类型,分别是: 1)Undefined.他只有一个值:undefined.如果一个变量被定义但是没有给他赋值,那么这个时候系统会默认给这个变量赋值为u ...
- JS中数据类型及原生对象简介
js是一种专门设计用来给网页增加交互性的编程语言,它的技术体系包含了一下几个方面: 1.JavaScript核心语言定义:包括数据类型,变量,常量,运算符,语句等. 2.原生对象和内置对象 3.浏览器 ...
- 每日学习心得:Js基本数据类型常用方法扩展
2014-02-17 前言: 节后的第一周上班,整个状态调整的还不错,已完全进入正常的工作状态.这一周主要还是对年前项目存在的一些问题进行完善.修整,基本上没有做大的改动.这里就把项目中经常用到的一些 ...
- js常用数据类型(Number,String,undefined,boolean) 引用类型( function,object,null ),其他数据类型( 数组Array,时间Date,正则RegExp ),数组与对象的使用
js常用数据类型 数字类型 | 字符串类型 | 未定义类型 | 布尔类型 typeof()函数查看变量类型 数字类型 Number var a1 = 10; var a2 = 3.66; conso ...
- JavaScript笔记1———js的数据类型
JS的数据类型有: 1.数值类型(Number):js中所有数字均用浮点数字表示. 可以表示32位(即4字节)的整数,也可以表示64位(即8字节)的浮点数(小数). 也可以用二进制.八进制.十进制.十 ...
- js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题
js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...
- js的数据类型--字符串
js的数据类型——字符串 这篇我们来说说js的第二种数据类型——字符串. js的内置功能之一就是字符串拼接.如果将加号(+)运算符用于数字,表示两数相加.但将它作用于字符串,则表示字符串拼接,将第二个 ...
- js的数据类型--数字
近期做一些项目的时候发现,自己的js基础还是不够扎实,再看一遍犀牛书,加深自己的理解和印象.所以从这篇文章开始,后面都是关于原生js的一些内容. 这篇文章,我们具体介绍一下js的数据类型其中一种. j ...
- JS基本数据类型&流程控制
JS基本数据类型 number ----- 数值 boolean ----- 布尔值 string ----- 字符串 [x,y] -------数组 undefined ...
- js原始数据类型和引用数据类型=>callback数据传输原理
摘要:js的数据类型有种划分方式为 原始数据类型和 引用数据类型. 原始数据类型 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置.栈区包括了 变量的标识符和变量的值. ...
随机推荐
- oracle备份工具exp-imp
rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpmrpm -ivh http: ...
- 自动运维:Ansible -ansible tower
文档主页:http://docs.ansible.com/参考文档:http://docs.ansible.com/ansible/参考文档:http://docs.ansible.com/ansib ...
- oracle如何写包
一:如何使用FOR循环二:如何使用拼接语句 EXECUTE IMMEDIATE v_sql INTO v_WORK_ORDERID;三:如何定义记录类型做为变量,用于存储及查询 CREATE OR R ...
- 获取广告标识符ifad
#import <AdSupport/ASIdentifierManager.h> NSString *adId =[[[ASIdentifierManager sharedManager ...
- VR内容定制请找北京动软VR团队,长年承接VR/AR应用、游戏内容定制
最近这一拔VR及AR浪潮得到业界的热捧,与2015年年底到2016年年初乐相.蚁视.睿悦.焰火工坊等VR创业公司,陆续发布融资的信息不无关系.业界也有统计数据称,约90%的VR投资案例,发生在2015 ...
- LeetCode "Design Twitter"
A mix of hashmap, list and heap. struct Tw { Tw(long long pts, int tid) { ts = pts; tweetid = tid; } ...
- mysql:查询结果添加序列号
select (@i:=@i+1) as i,table_name.* from table_name,(select @i:=0) as it
- PBR实现
我们的目标:UnityStandard 我一直作Unity开发,所以环境也就选择了Unity.目标也就是尽可能接近UnityStandard的效果,不过主要为了学习PBR,所以就只实现基本的PBR和法 ...
- 在UIView上添加tableView设置代理属性
- Sql Server Job 简单使用
http://www.cnblogs.com/zerocc/p/3400529.html(转载) use msdb EXEC sp_add_job @job_name = 'tk_bakdata' ...