JavaScript中的值和引用
2024-08-28 00:06:06
JavaScript5中有6种基本数据类型:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)
ES6中新引入一种原始数据类型:Symbol,表示独一无二的值。ES5中对象属性名都是字符串,比较容易造成属性名冲突。比如,当你使用了一个他人提供的对象,你想为这个对象添加一个新的方法,新方法的名字就有可能与现有方法产生冲突,如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol
的原因。
在JavaScript中,有些类型是复制了值,有些是复制了引用:
原始值(复制值)
null
undefined
Boolean
Number
String
对象(复制引用)
Object
Array
Function
原始值:当我们把这些初始值赋给了变量的时候, 我们 复制了值 .
var a = ; var b = a; a = ; console.log(a); //
console.log(b); // 5 // 这也同样适用于 string, boolean, null, undefined
对象:
var a = {};
var b = a; a.a = ; console.log(a); // {a: 1}
console.log(b); // {a: 1}
对于数组也是复制引用:
var a = [];
var b = a; a.push(); console.log(a); // [1]
console.log(b); // [1]
console.log(a === b); // true
关于[10]===[10]的例子
console.log([]===[]); //false
当我们比较对象的时候,相等运算符(===)会检查他们是否指向相同的地址。所以如果 [10]
和 [10]
是两个不同的数组,结果就会返回 false
。当你想要对比两个对象或者数组是不是相同的方法很简单,但是这样的方法也很有限
JSON.stringify(a) === JSON.stringify(b)
尽管这样的方法在数组和对象内部顺序不一样的时候,还是会出错。如果你想要更健壮的解决方法的话,参考 lodash _.isEqual() method
参考:https://www.tuicool.com/articles/YnMv2uz
最新文章
- 《利用python进行数据分析》读书笔记--第七章 数据规整化:清理、转换、合并、重塑(三)
- SQL server 语句新建用户、对用户授权、删除用户实例
- 深入理解Java内存模型(一)——基础(转)
- 【python】类的访问限制
- [转]make: 警告:检测到时钟错误。您的创建可能是不完整的。
- juniper-cisco-HP上网设置
- PHP伪造referer突破防盗链
- [AngularJS] Html ngSanitize, $sce
- JQuery Mobile页面加载处理
- java学习面向对象值static
- Rotate List 面试题
- 深入学习webpack(一)
- 学习笔记CB009:人工神经网络模型、手写数字识别、多层卷积网络、词向量、word2vec
- timer控件、三级联动、帐号激活权限设置
- win7系统开机后电脑桌面背景变黑的解决方法
- window + php + memcached 安装
- css3 box-sizing详解。
- OneZero第四周第一次站立会议(2016.4.11)
- [USACO18OPEN]Out of Sorts G 冒泡排序理解之一
- Python3基础 函数 可变参数,将传进来的参数转成列表
热门文章
- Tomcat源码分析——server.xml文件的加载
- JavaScript的柯里化函数
- WCF 之部署(2010版本之上)
- Azure 应用服务中的 API 应用、ASP.NET 和 Swagger 入门
- [javaSE] 集合工具类(Collections-sort)
- [PHP] 试题系统研究
- 文件上传(Servlet/Struts2/SpringMVC)
- Android 一种非常好用的Android屏幕适配
- springmvc中Controller前端控制器的映射与返回数据,以及异常处理
- Datatables跳转到指定页