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基础数据类型与引用类型的更多相关文章

  1. js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题

    js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...

  2. JavaScript基础——数据类型

    JavaScript使用数据类型来确定如何处理被分配给一个变量的数据.变量的类型决定了你可以对变量进行什么操作,如循环或者执行.下面描述了最常用的变量类型. 字符串(String):此数据类型将字符数 ...

  3. JavaScript 基本数据类型和引用类型的区别详解

    js基本数据类型: js基本数据类型包括:undefined,null,number,boolean,string.基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值 1. 基本数据类 ...

  4. JavaScript基础数据类型(一)

    动态类型 JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定.这也意味着你可以使用同一个变量保存不同类型的数据: var foo = ...

  5. Javascript基础--数据类型

    一.基本数据类型 1.字符类型:表示字符的类型,例:'aaa',"aaaa",'123456',''(空字符) 2.数字类型:表示数字的类型,例:0,1,3.1415936等 特殊 ...

  6. JavaScript基础数据类型

    一.数值 1.JavaScript不区分整型和浮点型,就只有一种数字类型 2.还有一种NaN,表示不是一个数字(Not a Number) eg: parseInt("ABC")  ...

  7. JavaScript基础入门 - 01

    JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码, ...

  8. 新手怎么学JS?JavaScript基础入门

    新手应该怎么学习JS?JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写Ja ...

  9. JavaScript基础入门01

    JavaScript能用来做什么?     页面分为:结构.样式.行为.   JavaScript的组成:     ECMAScript.BOM.DOM       ECMAScript是一个标准,它 ...

随机推荐

  1. PHP 安装 Xdebug 扩展(一)

    一.前言 1. Xdebug 简介 Xdebug 是一个开放源代码的 PHP 程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况.当前最新版本为 Xdebug 2.5.0 ...

  2. sql关键字之null

    在数据库中使用一种特殊的值表示未知的值--NULL,我们称之为空值但并不是空的字符串,而是特殊的值.

  3. linux 内核的spinlock

    spinlock设计成了三层,第一层是接口,第二层raw实现层,第三层是CPU平台层.在第二层raw实现层提供了两个分支,分别是单CPU和多CPU(核).第三层是不同CPU的锁操作实现.raw层除了调 ...

  4. 九思老客户分享:部署OA办公系统的四大意义

    原文:http://www.jiusi.net/detail/472__776__4009__1.html 关键词:OA办公系统.oa系统 .九思OA 九思老客户分享:部署OA办公系统的四大意义 当今 ...

  5. Excel 数据导出

    Web  controller /// <summary> /// 导出数据 /// </summary> /// <param name="UserID&qu ...

  6. declare 命令

    declare命令用于声明和显示shell变量. declare为shell指令,命令与 typeset一样,可同时指定多个属性.若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令 ...

  7. Microsoft Windows 2003 SP2 - 'ERRATICGOPHER' SMB Remote Code Execution

    EDB-ID: 41929 Author: vportal Published: 2017-04-25 CVE: N/A Type: Remote Platform: Windows Aliases: ...

  8. Oracle 12C 新特性之move (非分区表)table online

    以前版本中move table不能够online, move 会引rowid改变使对应的索引失效. 12c 中 alter table move online不会对新事务阻塞同时会自动的维护索引的有效 ...

  9. DelayQueue的原理和使用浅谈

    在谈到DelayQueue的使用和原理的时候,我们首先介绍一下DelayQueue,DelayQueue是一个无界阻塞队列,只有在延迟期满时才能从中提取元素.该队列的头部是延迟期满后保存时间最长的De ...

  10. 用户登录安全框架shiro—用户的认证和授权(一)

     ssm整合shiro框架,对用户的登录操作进行认证和授权,目的很纯粹就是为了增加系统的安全线,至少不要输在门槛上嘛. 这几天在公司独立开发一个供公司内部人员使用的小管理系统,客户不多但是登录一直都是 ...