JavaScript中的值和引用
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
JavaScript中的值和引用的更多相关文章
- JavaScript中基本数据类型和引用数据类型的区别(栈——堆)
JavaScript中基本数据类型和引用数据类型的区别 1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据 ...
- Javascript 中的闭包和引用
Javascript 中一个最重要的特性就是闭包的使用.因为闭包的使用,当前作用域总可以访问外部的作用域.因为Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关的. ...
- JavaScript检测原始值、引用值、属性
上周写过一篇读书笔记<编写可维护的JavaScript>之编程实践,其中 第8章 避免『空比较』是博主在工作中遇坑较多的雷区,所以特此把该章节重新整理分享,希望大家不再坑队友(>﹏& ...
- JavaScript中基本数据类型和引用数据类型的区别
1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变 ...
- javascript中可变值与不可变值(原始值)
字符串原始值修改不了1 var str = "abc"; 2 str[0] = "d"; 3 console.log(str[1]="f") ...
- JS中原始值和引用值的储存方式
在ECMAscript中,变量可以存放两种类型的值,即原始值和引用值 原始值指的是代表原始数据类型的值,也叫基本数据类型,包括:Number.Stirng.Boolean.Null.Underfine ...
- JavaScript中Unicode值转字符
在JavaScript中,将Unicode值转字符的方法: <!DOCTYPE html> <html> <head> <meta charset=" ...
- 前端要给力之:语句在JavaScript中的值
文件夹 文件夹 问题是语句有值吗 那么说你骗我咯 有啥米用呢 研究这个是不是闲得那个啥疼 ES5ES6有什么差异呢 结论是ES6是改了规则但更合理 最后不不过if语句 这两天在写语言精髓那本书的第三版 ...
- JS中原始值和引用值分析
JS中变量中两种类型的值:原始值,引用值 原始值是存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置. var x = 1; //1就是一个原始值,变量x中存放的就是原始 ...
随机推荐
- js 获取当前标签 jquery1.11.4
.<input type="checkbox" onchange='allstu(this);return false;' /> 2.<input type=&q ...
- iOS傻金币动画
项目要做一个撒金币签到的动画,分享出来 金币.zip,其中有几个做的时候注意的点. 1.金币掉入口袋的过程,有入口袋的效果. 开始做的时候直接把金币添加到底部的View上这样入口袋的时候,口袋里边显示 ...
- 【angular5项目积累总结】列表多选样式框(1)
憋不住想说一下:angular坑太多,各种教程各种不完整,官网还只是简单的画饼充饥,没办法只有自己研究自己总结,便于以后提高工作效率. 第一种: view code list.css :ho ...
- [转]NancyFx/Nancy
本文转自:https://github.com/NancyFx/Nancy/wiki/Documentation Getting Started Introduction Exploring the ...
- request发送json-rpc请求
直接贴代码吧: let url = '/rest/2.0/res/auth_token?session=' + session url += getUrlTokenQuery() const meth ...
- mongdb启动报错
2018-08-19T12:25:31.707+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1 ...
- pollard_rho 算法进行质因数分解
//************************************************ //pollard_rho 算法进行质因数分解 //*********************** ...
- Code Signal_练习题_Are Similar?
Two arrays are called similar if one can be obtained from another by swapping at most one pair of el ...
- csharp: 图片字符间距
引用WINDOWS API: [DllImport("gdi32.dll", CharSet = CharSet.Auto)] public static extern int S ...
- OI中的一些模板
线性筛 #include"cstdio" #include"cstring" #include"iostream" #include&quo ...