原文参考http://mp.weixin.qq.com/s/apFyUgqT5N-bsDUjP4Eryg

笔记总结

首先记住js中的基础数据类型
undefined,null,boolean,string,number

1基本数据类型
一基本数据类型的值是不可变的
var name = 'hello';
name.substr(2);// 此处sunstr方法返回新的字符串
console.log(name);// ‘hello’

var name = 'hello2';
name = 'world'
console.log(name);// 输出'world',可以理解现在栈中新有一块地址存储的是world,但是它的标识符是name,现在name代表的是world了。

二基本数据类型不可以添加属性和方法

三基本数据类型是简单赋值
var a = 10;
var b = a;// 这里理解是把10给了b
b = 15;
console.log(a);// 10
console.log(b);// 15
a和b有各自的存储空间

四基本数据类型是值比较
var a = '{}';
var b = '{}';
console.log(a == b);// 这里是字符串的比较,所以返回是true

五基本数据类型存放在栈中。
栈里存放的是一个字典
左侧是Key(变量名)右侧是value(真正的值)

2引用类型
一值是可以改变的
var o = {x:1};
o.x = 2;// console.log(o.x)已经变为2

二可以添加属性和方法
var obj = {};
obj.name='zs';
obj.getName=function(){console.log(obj.name)}

三引用类型赋值的是对象引用
var a = {};
var b = a;// b在栈中新建了一个地址,指向了a在堆中存储的数据
a.name = 'change';// a的更改会影响b的数值
console.log(a.name);// change
console.log(b.name);// change

四引用类型比较的是引用地址
var a = {};
var b = {};
console.log(a == b);// 在内存中地址是动态分配的,这里返回false

五引用类型数据会保存在栈和堆中
var a = {name:'zs'}
栈中保存的是a和一个分配的地址
堆中保存的是{name:'zs'}

基本包装类型即Number,Boolean,String(首字母大写,现在看成是一个类型)
js本身自带的。
var str1 = 'hello';
实际在js内部执行了下面操作:
var str1 = new String('hello');
var str2 = str1.substr(2);
str1 = null;// 这里就释放了str1与值得关联,在垃圾收集器回收时候,自动回收。因为自动执行了这一步所以基本数据类型无法添加属性和方法。只有基本包装类型才会有这一步。

js基本数据类型和引用类型的区别详解-笔记的更多相关文章

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

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

  2. mysql数据类型double和decimal区别详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt336 实数是带有小数部分的数字.然而,它们不只是为了存储小数部分,也可以使用 ...

  3. JQ的offset().top与js的offsetTop区别详解

    一.前言 最近在做一个图片懒加载的插件,就纵轴(Y轴)而言,我需要时时获取图片的上偏移量,好判断是否已进入视图区域,而我所理解的是offsetTop应该是跟offset().top一样的,然后陷入了因 ...

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

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

  5. 检索01-c#中基本数据类型和引用类型的区别

    1.基本定义 基本数据类型包括:整型.浮点型.字符型.结构体.布尔型.日期时间.枚举类型等 引用类型包括:字符串.类.数组.接口等 堆定义:是一种特殊的树形数据结构,每个结点都有一个值,一般由程序员分 ...

  6. JQ的offset().top与JS的getBoundingClientRect区别详解,JS获取元素距离视窗顶部可变距离

     壹 ❀ 引 我在 JQ的offset().top与js的offsetTop区别详解 这篇博客中详细分析了JQ方法offset().top与JS属性offsetTop的区别,并得出了一条offset( ...

  7. GoLang基础数据类型--->字典(map)详解

    GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是 ...

  8. HTTP POST GET 本质区别详解

    HTTP POST GET 本质区别详解 一 原理区别 一般在浏览器中输入网址访问资源都是通过GET方式:在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交 Ht ...

  9. javascript中=、==、===区别详解

    javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...

随机推荐

  1. 2016级算法第一次练习赛-A.群鸦的盛宴

    858 群鸦的盛宴 题目链接:https://buaacoding.cn/problem/858/index 思路 本题乍一眼看过去,你可能会想到使用一个二维数组A[51][51]来记录从i到j的路线 ...

  2. Windows搭建Go语言环境·

    对于Windows用户,Go语言提供两种安装方式(源码安装除外): .MSI安装:程序会自动配置你的安装 .ZIP安装:需要你手动设置一些环境变量 一.MSI安装 1.下载安装包(根据操作系统选择相应 ...

  3. java-web 登陆功能

    目录结构 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

  4. rocketmq sql解析过滤

    activemq rocketmq kafka robbitmq 公司 apache alibaba LinkedIn Pivotal 编写语言 java Erlang 客户端支持 其他协议支持 mq ...

  5. android中Zing二维码扫描,二维码生成

    Android中二维码扫描的最常用库是zxing和zbar,zxing项目地址为https://github.com/zxing/zxing,目前还有多个人在维护.zbar主要用C来写的,对速度有要求 ...

  6. signed char型内存位bit表示

    signed char型内存 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9 ...

  7. 设置MySQL字符集utf8

    1.修改mysql 配置文件my.cnf 标签[mysqld]下添加即可 character-set-server = utf8 2.创建数据库时设置字符集 create database db_na ...

  8. 批量修改dos文件到unix

    1. 安装dos2unix 2. 执行:find ./ -type f | xargs dos2unix

  9. Java中break、continue及标签等跳转语句的使用[下]

    作为上一篇使用for循环演示的跳转,这一篇将使用while.相比较来说,while比for循环更简单.代码如下: public class LabeledWhile { public static v ...

  10. JavaScript设计模式系列学习笔记目录

    说明 本系列笔记参考书籍<JavaScript设计模式>.<JavaScript高级程序设计3> 参考博客:汤姆大叔博客:http://www.cnblogs.com/TomX ...