值的操作分为三大类:复制,传递,比较

一:复制

原始值
let a = 10;
let b = a;
注释:2018-7-30 17:33:49
1 原始类型的值都是存放在栈内存当中,所以他们的赋值操作,其实相当于在栈内存开辟新的空间,然后将值的副本赋给新的内存,所以他们互不干扰 引用值
let obj = {
name:'panrui'
};
let obj1 = obj;
1 引用类型的值是存放在堆内存当中,栈内存中变量保存的只是一个堆内存的地址,所以赋值操作,也是开辟一个新的栈内存,然后将地址赋值给新的内存,由于两个变量对应的地址指向同一个地方,所以他们会互相影响
2 tip:如果给变量赋值新值呢
2.1
obj1 = 6
console.log(obj) //{name:'panrui'} 并不会影响
2.2
obj = 6
console.log(obj1) //{name:'panrui'} 并不会影响
重复赋值实际上是覆盖变量对原值的引用,变为另一个值的副本或对其引用。所以不会对原值产生影响

二:传递

原始值
let a = 10;
function f(x){
x= x + x
}
f(a)
console.log(a) // 10
注释:说明传递和赋值其实是一样的,都是传递值的副本,互不影响 引用值
let obj = {
name:'panrui'
};
function a(a){
a.name = 'hello'
}
function(obj)
console.log(obj) // {name:'panrui'} 因为传递的地址指向的同一个引用,所以互相影响 注释:说明不管是基本类型,还是引用类型都是按值传递的,引用类型传递的是地址,基本类型传递的值的副本
function a(a){
a.name = 'hello';
a = new Object();
a.name = 'hah';
console.log(a) //{name:'hah'} 相当于重新赋值,这时候a在栈内存保存的是另外一个值的副本或者新的地址 }
a(obj)
console.log(obj) //{name:'hello'}

三:比较值

原始值
let a = 'hello'
let b = 'hello'
a === b //true
注释:当对原始值进行比较时,进行逐字节的比较来判断它们是否相等。比较的是值本身,而不是值所处的位置,固然比较的结果可能会相等,
但只是说明它们所包含的字节信息是相同的 引用值
let a = new Number(1);
let b = new Number(1);
a === b //false let c = a;
a === c //true 注释:当比较两个引用值时,比较的是两个引用地址,而不是比较它们的原值字节是否相等

JS浅谈原始值与引用值操作的更多相关文章

  1. Js 中的原始值和引用值

    最近遇写 node.js 时到一个问题,把对象当赋值给数组成员时总是出错,比如下面的代码, var Arr = new Array(); var Obj = new Object(); for(var ...

  2. JS中原始值和引用值分析

    JS中变量中两种类型的值:原始值,引用值 原始值是存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置. var x = 1; //1就是一个原始值,变量x中存放的就是原始 ...

  3. JS中原始值和引用值的储存方式

    在ECMAscript中,变量可以存放两种类型的值,即原始值和引用值 原始值指的是代表原始数据类型的值,也叫基本数据类型,包括:Number.Stirng.Boolean.Null.Underfine ...

  4. javascript原始值和引用值类型及区别

    原始值和引用值类型及区别 首先,原始值和引用值类型都是js中的数据类型,为了充分利用存储空间,定义了不同的数据类型,而且js是弱类型,动态语言,数据类型可变. 原始值(简单数据类型) 存储在栈中的简单 ...

  5. JavaScript数据操作--原始值和引用值的操作本质

    我的一句话总结:原始值不管是变量赋值还是函数传递都不会改变原值,引用值不管是变量赋值还是函数传递,如果新变量重新赋值,则不会影响原引用值,如新变量是直接操作,就会影响原引用值. 首先明确,值和类型是两 ...

  6. ECMAScript 原始值和引用值

    原始值和引用值 在ECMAScript中,变量可以存在两种类型的值,即原始值和引用值 原始值 存储

  7. ES6 学习笔记(三)原始值与引用值

    总结: 1.原始值,表示单一的数据,如10,"abc",true等. 1.1. ES的6种原始值: Undefined.Null.Boolean.Number.String.Sym ...

  8. js—浅谈方法和思路的重要性(首篇求大佬支持)

    js-浅谈方法和思路的重要性 学了这么久的js,我从老师的,同学的代码中发现,老师写的代码比我们的要清楚的很多,基本上没有太多累赘啊,能少的没有少啊等等..... 废话不多说,下面我们来看看这个我的一 ...

  9. JavaScript-原始值和引用值

    一.原始值和引用值的概念 在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值. 1.1 原始值 (1)原始值指的是 原始类型 的值,也叫 基本类型,例如 Number.Stirn ...

随机推荐

  1. LOJ #2533. 「CTSC2018」暴力写挂(边分治合并)

    题意 给你两个有 \(n\) 个点的树 \(T, T'\) ,求一对点对 \((x, y)\) 使得 \[ depth(x) + depth(y) - (depth(LCA(x , y)) + dep ...

  2. 第二章 python的介绍及变量

    1.编程语言的介绍 a.机器语言 使用二进制编写指令的编程方式 b.汇编语言 汇编指令与机器语言相对应 c.高级语言 需要借助特殊的工具将其转换成机器语言,但是方便人进行阅读理解的编程方式 从执行效率 ...

  3. python实现加密

    1.md5加密 hashlib 库中包括如SHA1.SHA224.SHA256.SHA384.SHA512和MD5算法等 >>> import hashlib>>> ...

  4. Web of science数据下载以数据处理

    目标网站分析 我们要获取的就是这几个数值 程序实现 # -*- coding: utf-8 -*- """ @Datetime: 2019/2/28 @Author: Z ...

  5. NLP相关问题中文本数据特征表达初探

    1. NLP问题简介 0x1:NLP问题都包括哪些内涵 人们对真实世界的感知被成为感知世界,而人们用语言表达出自己的感知视为文本数据.那么反过来,NLP,或者更精确地表达为文本挖掘,则是从文本数据出发 ...

  6. oldboy s21day10

    #!/usr/bin/env python # -*- coding:utf-8 -*-   # 1.写函数,函数可以支持接收任意数字(位置传参)并将所有数据相加并返回. ''' def func(* ...

  7. css实现移动端水平滚动导航

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. css和css3弹性盒模型实现元素宽度(高度)自适应

    一.css实现左侧宽度固定右侧宽度自适应 1.定位 <!DOCTYPE html> <html lang="en"> <head> <me ...

  9. java PDF2JPG

    import org.apache.commons.lang3.StringUtils; import org.apache.pdfbox.pdmodel.PDDocument; import org ...

  10. Centos7.5 安装VirtualBox增强工具

    一.安装 1.自带tools:  选择VirtualBox工具栏 => 设备 => 安装增强功能 2.挂载光驱 3.进入光驱目录,执行(一定要用root权限执行) ①安装gcc yum i ...