惊呼!JavaScript基本数据类型和引用数据类型详解

前言

我是歌谣 知其然知其所以然 人人都有一个大厂梦 希望通过自己的一个总结分享可以给予大家带来帮助和提升。

本期知识点

JavaScript中基本数据类型和引用数据类型

目标

  1. 理解基本数据类型和引用数据类型的定义
  2. 理解堆和栈
  3. 数据类型分为哪些

定义

ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型。
 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。
 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值。

常见的数据类型

基本数据类型

  • Sting
  • Number
  • Boolean
  • null
  • undefined
  • Symbol

引用数据类型

  • Object
  • Date
  • function
  • RegExp
  • Array …

栈内存(stack)

栈内存:是一种特殊的线性表,它具有后进先出的特性,存放基本类型。

在这里插入图片描述

堆内存(heap)

在这里插入图片描述

区别

1复制变量时的不同
对于基本类型来说,一般会在变量对象上创建一个新值,然后把这个值复制到为新变量分配的类型上面
对于引用类型来说,也会将存储在变量对象的值复制一份到新变量的内存空间中,但是这个值的副本其实是一个指针,这个指针指向我们被赋值的对象,即不管怎么样,引用类型的赋值其实都是引用的同一个对象

2参数传递的不同
首先我们应该明确一点:ECMAScript中所有函数的参数都是按值来传递的。
原始值:只是把变量里的值传递给参数,之后参数和这个变量互不影响。
引用值:对象变量它里面的值是这个对象在堆内存中的内存地址,因此它传递的值也就是这个内存地址,这也就是为什么函数内部对这个参数的修改会体现在外部的原因了,因为它们都指向同一个对象。

3声明变量时不同的内存分配:
原始值:存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
引用值:存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存地址。

检测方法

可以通过typeof检测基本类型和复杂类型,不过检测出来的复杂类型都是Object,如果想要检测复杂类型可以通过 instanceof
语法:object instanceof constructor

var a1=0;                 // typedof a1 -> number
var a2 = 'this is str';  //typedof a2 -> string
var a3 =null;           //typedof a3 -> null
var c= [1,2,3];        // c instanceof Array  ->true
var b={m:20};         // b instanceof Object ->true

总结

面试中经常会问我们基本数据类型有哪些
我是歌谣 放弃很容易 坚持一定很酷 纯属个人总结 若有不合理之处 可选择性关闭网页 欢迎讨论
下一期预计开始讲解原型和原型链部分 敬请期待

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机的特点 分类及其应用,2016计算机知识:计算机的特点、分类及其应用(1)...

【导读】为了帮助广大考生更好的备考,中公事业单位考试网提供2016年计算机知识《计算机的特点、分类及其应用(1)》,为考生定制计算机基础知识复习计划,相信广大考生可以顺利计算机知识考试。一、第1代:电子管数字计算机(1946-1958…

面向船舶结构健康监测的数据采集与处理系统(一)系统架构

世界贸易快速发展起始于航海时代,而船舶作为重要的水上交通工具,有 其装载量大,运费低廉等优势。但船舶在运营过程中出现的某些结构处应力值 过大问题往往会给运营部门造成重大的损失,甚至造成大量的人员伤亡和严重 的环境污染…

Gunicorn 0.17 发布,Python HTTP 服务器

HTTP 服务器 Gunicorn 0.17 发布了,该版本改进内容包括: 支持绑定多个网卡地址支持 SSL支持 syslog增加 nworkers_changed 钩子为 post_request 钩子增加 response 参数使用 argparse 解析命令行参数(废弃 optparse)fix PWD detec…

优地机器人厂家_2019中国人工智能机器人企业TOP30榜单发布 优地科技跻身前十...

原标题:2019中国人工智能机器人企业TOP30榜单发布 优地科技跻身前十据2019《互联网周刊》&eNet研究院选择排行,“2019中国的人工智能机器人企业TOP30”榜单新鲜出炉,名单如下:从榜单可以看到,阿里巴巴、新松、百度…

计算机网络中的高层应用,第四章计算机网络中的高层应用-.ppt

第四章计算机网络中的高层应用-第四章 计算机网络中的高层应用 掌握C/S模式和B/S模式 熟练掌握常用的网络高层服务: WWW、Telnet 、FTP、EMAIL、DNS等 了解其它网络应用:BBS、IP电话、VOD等 引 言 网络的应用层是计算机开放互连环境与本地的操作系统环境…

硬核!原型和原型链详解

前言 我是歌谣 知其然知其所以然 人人都有一个大厂梦 希望通过自己的一个总结分享可以给予大家带来帮助和提升。 本期知识点 原型和原型链 目标 1理解原型和原型链 2理解构造函数 3理解构造函数 原型和原型链之间的关系 引用类型都是对象 基本数据类型和引用数据类型可以看下…

TCP/IP协议读书笔记(1)

TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器保活定时器2MSL定时器其中坚持定时器用于防止通告窗口为0以后双方互相等待死锁的…

python 3 5_零基础学Python3(5):基础运算符(上)

人生苦短,我选Python前文传送门前言前面我们讲了变量的基础操作,本文我们接着讲运算符。运算符根据用途可以分为以下这么几类:算术运算符比较运算符赋值运算符逻辑运算符成员运算符身份运算符本篇我们先介绍前两个,算术运算符和比…

JS中的异步任务有哪些

JS中的异步任务有哪些 异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会…

spring下jndi配置

参考: 1)Spring配置JNDI(Tomcat7) http://liuzidong.iteye.com/blog/962841 2)在tomcat 6.0下配置JNDI及在Spring中的使用 http://hi.baidu.com/xulong7814/item/1b150826c4cd81cadcf69abf 转载于:https://www.cnblogs.com/lpshou/archive/20…

机场精细化管理_宇视科技智慧机坪解决方案助力机场实现精细化管理

飞行需求不断膨胀,有限的空域资源愈发拥挤,带来航班延误、资源浪费及航行安全等问题,降低机场运行效率。机坪作为空中交通起讫点,也是拥堵、延误多发区,对机场整体运行效率至关重要。如何在兼顾成本下,让机…

安徽省计算机水平考试试卷,第1次安徽省计算机水平考试试卷.doc

PAGEPAGE 62006第一次安徽省计算机水平考试试卷(ACCESS)单项选择题(每题1分,共40分)能将高级语言源程序转换为目标程序的是A)编译程序 B)解释程序 C)测试程序 D)编辑程序6位无符号二进制数能表示的最大十进制整数是A)64 B)63 C)32 D)31在Windows中,下列关…

总结:js延迟加载的方式有哪些?

该面试题主要考察的是程序的性能方面。性能优化的核心思想就是快,常见的优化手段有预先准备数据(如缓存),按需获取,分段、异步获取等 由于JavaScript的阻塞特性(单线程运行),在每一个…

Android中简单的日期格式化

自己遇到的一点格式化日期的方法,记下来 // 今天的信息 显示时间 dateStr DateFormat.getTimeFormat(context).format(date); // 日期 dateStr DateFormat.getDateFormat(context).format(date)" "DateFormat.getTimeF…

集群没有leader_面试官问:说说你对ZooKeeper集群与Leader选举的理解?

ZooKeeper是一个开源分布式协调服务、分布式数据一致性解决方案。可基于ZooKeeper实现命名服务、集群管理、Master选举、分布式锁等功能。高可用为了保证ZooKeeper的可用性,在生产环境中我们使用ZooKeeper集群模式对外提供服务,并且集群规模至少由3个Zoo…

t3修改计算机后就无法登录了,电脑更换系统后,用友T3登录不上了,一直显示这个,怎么处理,这个怎么解决...

我用的是类似用友的FineReport报表软件,没用过您那款软件,我帮您搜了一下您看看能不能帮到您:运行软件常出现的提示Run-time error429运行一些软件常出现这样的提示:Run-time error429:Activex componert cant create object是说你…

浅谈webpack打包原理

模块化机制 webpack并不强制你使用某种模块化方案,而是通过兼容所有模块化方案让你无痛接入项目。有了webpack,你可以随意选择你喜欢的模块化方案,至于怎么处理模块之间的依赖关系及如何按需打包,webpack会帮你处理好的。 关于模…

ubuntu rsync

rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法&#xf…

android音频杂音问题_Android 音视频去回声、降噪(Android音频采集及回音消除)(转)...

好久没写文章了,其实是想记录一下自己在Android开发的成长历程。谈到音视频这块,对于新手来说刚接触到这一块,那是非常非常的恶心~我自己弄这一块也是从头开始,在 网上也翻阅了无数的资料、浏览了无数的博客,尝试了多种…

CImage类 from http://www.cnblogs.com/afarmer/archive/2012/03/31/2427273.html

CImage类 Visual C的CBitmap类的功能是比较弱的,它只能显示出在资源中的图标、位图、光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件(BMP、GIF、JPEG等)。如果想要在对话框或其他窗口中显示外部图像文件则只能借助于第三方提供的控…