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)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置.栈区包括了 变量的标识符和变量的值. ...
随机推荐
- 开发时建议关闭chrome的缓存[Disable cache(while DevTools open)]
问题:修改了css,JS后,chrome看不到效果 具体情景:最近在写一个PHPbbs,在写CSS时,习惯性的按F5刷新,firefox ie等,都能即时见到效果,唯独chrome 怎么都不行,想了想 ...
- linux KERNEL 问题
http://stackoverflow.com/questions/9305992/linux-threads-and-process 深入 Linux 的进程优先级(vruntime) https ...
- GridView_RowCommand事件中取得GridViewRow
GridViewRow row = ((Control)e.CommandSource).BindingContainer as GridViewRow;
- ios 利用airprint实现无线打印(配合普通打印机)
很多时候,我们不可能为了一个打印功能而去替换打印机,来支持无线打印. 找了很久,终于找到了一种解决方案,来适应大多数没有带wifi功能的打印机支持无线打印. 前提: 有wifi路由器:因为手机要打印, ...
- KnockoutJS中父元素有click绑定引起checked绑定时失效
KnockoutJS中的checked绑定如果父元素有click绑定,会出现状态点击没反应,实际KO的值已经变化的情况. 这种情况下应该在checked绑定的元素上除了阻止事件冒泡,另外还需要额外加上 ...
- 轻量级Lua IDE ZeroBrane Studio 的使用技巧和汉化
快捷键 : alt + shift +鼠标 ,可以块选中文本. F12 折叠/展开 所有 F5 调试运行 点击第二次 将跳转到第一个断点处 F10 单步执行 shift +F10 单步执行,不进入函数 ...
- VR软件定制外包团队:国内设备开发公司已超90家
昨日是UNITE 2015 BEIJING大会的第二天,相比于新手训练营和VR Day活动,昨天的大会更加注重分享和展示.Unity 创始人David Helgason在也大会上进行了Unity 5 ...
- some code of c
// // main.c // LineList // // Created by Rubert on 16/9/11. // Copyright © 2016年 Study. All rights ...
- 多个Python环境的构建:基于virtualenv 包
假如一台计算中安装多个Python版本,而不同版本可能会pip安装不同的包,为了避免混乱,可以使用virtualenv包隔离各个Python环境,实现一个Python版本对应一套开发环境. 本地概况: ...
- oledbdataadapter 读取excel数据时,有的单元格内容不能读出
表现:excel中某列中,有的单元格左上角有绿色箭头标志,有的没有,c#编写读取程序,但是只能读取出带绿色箭头的单元格中的内容,其余不带的读取不到内容 原因:excel中单元格因为是文本格式而存储了数 ...