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)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置.栈区包括了 变量的标识符和变量的值. ...
随机推荐
- 10天学会phpWeChat——第七天:创建一个自适应PC网站+H5移动端的模块
本教程基于phpWeChat核心框架1.1.0+版本.下载地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20 通过前面六讲的系 ...
- 通过 SMB 直通优化文件服务器的性能
https://technet.microsoft.com/zh-cn/library/hh831487.aspx Windows Server 2012 内置新增功能,称为 SMB 直通,用来支持使 ...
- 如何提高Linux操作系统的安全性 转自https://yq.aliyun.com/articles/24251?spm=5176.100239.blogcont24250.7.CfBYE9
摘要: Linux系统不论在功能上.价格上或性能上都有很多优点,但作为开放式操作系统,它不可避免地存在一些安全隐患.关于如何解决这些隐患,为应用提供一个安全的操作平台,本文会告诉你一些最基本.最常用, ...
- Registry values for ProductID and LocaleID for AutoCAD and the vertical products
原文地址:http://adndevblog.typepad.com/autocad/2013/08/registry-values-for-productid-and-localeid-for-au ...
- Vim常用命令总结
Vim常用命令总结: 下文是小编自己整理的关于日常linux vim编程过程中用的一些常用命令,资料参考鸟哥的 如果有需要的小伙伴可以参考一下!(底部有下载地址) 一. 一般模式可用的按钮说明 1.1 ...
- Mac下Virtual Box Host-Only网络配置
Mac下的虚拟机其实有很多,Parallels.VMware Fusion.Virtual Box都不错,Parallels是目前试过感觉最好的,Fusion装64位系统驱动支持似乎不完善,而且混合模 ...
- WCF部署于IIS使用的几个问题总结
Q:wcf 远程服务器返回错误: (405) 不允许的方法. A: new SqlServerOperateClient("BasicHttpBinding_ISqlServerOperat ...
- 为Asp.net WebApi 添加跨域支持
Nuget安装包:microsoft.aspnet.webapi.cors 原文地址:https://www.asp.net/web-api/overview/security/enabling-cr ...
- 3.3 哈尔小波空间W0
在3.2节我们学习了关于(3.8)定义的Vj的性质.特别的,我们可以乘以系数从一个Vj空间变换到另一个.我们这节学习V0和V1的关系. 将f1(t)∈V1投影至V0 我们考虑一个属于V1的函数f1(t ...
- es6 const
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...