美文网首页
JavaScript: 变量赋值以及方法的参数传递

JavaScript: 变量赋值以及方法的参数传递

作者: 康乐芳华 | 来源:发表于2019-07-14 23:15 被阅读0次

JavaScript 里面的数据类型分为两种

1 - 原始数据类型或者称之为基本数据类型: 听这名字就能知道这种类型不能再往下细分了。包括: Null Undefined String Number Boolean
2 - 引用类型或者称之为对象类型, 其实称作复合类型更加适合。 包括: Object Array Function Date
在声明一个变量的时候, 不同的值类型会有不同的内存分配机制。

对于一个原始值存储在栈(stack)中,直接存在变量访问的位置。原因是原始值的存储量比较小,大小固定,这样能很方便的查找变量的值。

但是对于一个引用类型的值是存储在 堆(heap)中的。也就是说, 存储在变量处的是一个指针,指向存储对象的内存地址。

let a = 12;
let b = a;

b 的值由 a 而来, 但是复制完成之后 a b 就完全是两个变量了, 两者之间没有任何关系了, 任何一方的改变都不会影响另一方。

let c = { name: "spring" };
let d = c;

由前面所说对象在赋值的时候设计的值保存在堆中, c d 都是指针, 他们都指向同一块内存区域。 let d = c 的真正含义是找到 c 的指向区域 , 将 d 这个指针指向该区域。

image.png

以后除非将 c 或者 d 的指向指向其他的区域, 否则 c d 任何一方的对对象的改动都会影响到另外一方。

ps: 以前一直以为 ES6const 赋值声明一旦对变量使用之后这个变量的值就不能再变动了, 其实不是总是这样的, 对一个原始值确实是这样, 但是对一个对象。

const e = { name: "china" };
e.name = "iron";
e.isHard = true

这样操作是完全合法的,也能得到预期的效果。 const 的真正表述应该是: 一旦你对一个变量应用了 const , 这个变量之后就不能再指向其他的值了。对象是一个容器, 至于里面有什么属性值是什么并不关心。

举个例子: 你只能有一个身体,即使这个身体的身高变高了或者头发剪短了也是你的身体, 但是将你转移给另外一个身体就是非法的。

const e = { name: "china" };
e = { name: "iron", isHard: true }

上面这个是非法的, 虽然看起来也是有效的, 但其实这个完全不一样的, 此处是重新赋值。当然换成 var 或者 let 就合法了, 但还是重新赋值

相关文章

  • JavaScript: 变量赋值以及方法的参数传递

    JavaScript 里面的数据类型分为两种 1 - 原始数据类型或者称之为基本数据类型: 听这名字就能知道这种类...

  • 参数传递传的是什么?2018-03-17

    方法上参数的传递,如果参数是引用类型的对象,传递的是地址; 如果参数是基本数据类型,传递的是值。 变量的赋值,传的...

  • 第十八章、参数

    传递参数 ①、参数的传递是通过自动将对象赋值给本地变量名来实现的。 ②、在函数内部的参数名的赋值不会影响调用者。 ...

  • Scala-14.函数式编程

    匿名函数——函数字面量,作为变量传入把函数作为参数的方法中,或者赋值给一个变量。 可以将函数作为变量传递,可以将匿...

  • Kotlin 和 Java 关于局部变量的区别

    众所周知,在 Java 方法内将局部变量作为参数传递到方法后,如果该参数是基本数据类型,那内部的赋值修改不会同步到...

  • php把函数作为参数传递!

    传递资源作为参数: 传递函数作为参数调用: 函数作为值赋给变量打印结果 函数赋值并调用,把结果当做值赋给变量 函数...

  • flutter【3】dart语言--方法

    方法 dart时纯面向对象语言,所以方法也是一种对象,Function。所以方法也能被赋值给变量,当成参数传递给其...

  • 参数和返回值的传递

    参数和返回值是怎么传递的 参数和方法里的局部变量可以认为是一样的,只是在方法调用之前,会用实参给参数的形参赋值 发...

  • 变量之间赋值的传递、方法的参数传递,值传递、引用传递?

    关于java程序运行时各种变量在内存的存储知识先看这里》》 变量赋值: 对于基本数据类型变量:即int, shor...

  • JavaScript匿名函数

    匿名函数,是指没有名称的函数。匿名函数可以传递参数,也可以赋值给一个变量。 在JavaScript中,有两种传值方...

网友评论

      本文标题:JavaScript: 变量赋值以及方法的参数传递

      本文链接:https://www.haomeiwen.com/subject/reqwkctx.html