美文网首页
JS 的引用赋值与传值赋值

JS 的引用赋值与传值赋值

作者: jasmine_jing | 来源:发表于2017-03-14 17:29 被阅读0次

准备拿别人的代码敲敲,自己感觉一下;然后刚开始就遇到了问题。
怎么都想象不来为什么下面的例子中的 a.x为什么 ;因为基础比较小白,就有人说道js里面的引用赋值跟传值赋值的区别;
附上一个不错的文档,也很清楚的解决了这个问题;
http://www.cnblogs.com/cench/p/6019453.html

var a={"x":1};
var b=a;
b.x=2;
a.x;
/*
2
*/

JS数字的类型:基本类型和引用类型;
基本类型:number,string类型都是基本类型,而基本类型存放在栈区,访问时按值访问,赋值是按照普通方式赋值;

引用类型:对象和数组是通过引用来赋值的;
引用类型指的是对象。可以拥有属性和方法,并且我们可以修改其属性和方法。引用对象存放的方式是:在栈中存放对象变量标示名称和该对象在堆中的存放地址,在堆中存放数据。

对象使用的是引用赋值。当我们把一个对象赋值给一个新的变量时,赋的其实是该对象的在堆中的地址,而不是堆中的数据。也就是两个对象指向的是同一个存储空间,无论哪个对象发生改变,其实都是改变的存储空间的内容,因此,两个对象是联动的。

var obj = {x:1,y:2};
//obj.x;
/*
1
*/
obj["x"];
/*
1
*/


var a=30;
var b=a;//30
a=20;
b;
a;
var a=[1,2];
var b=a;
a[0]=5;
b;
/*
5,2
*/

var a = [1,2];
var b = a.slice(0);
b[0]=6;
b;

/*
6,2
*/

var a = [1,2,3];
var b = a;
a = [4,5,6];
b;
/*
1,2,3
*/

相关文章

  • JS 的引用赋值与传值赋值

    准备拿别人的代码敲敲,自己感觉一下;然后刚开始就遇到了问题。怎么都想象不来为什么下面的例子中的 a.x为什么 ;因...

  • 基础知识点

    基础知识点 单双引号 传值方式 赋值传值 : 赋值时直接赋值固定值 引用传值: 参考文章:PHP取地址符(引用符)...

  • js的变量赋值与引用赋值

    1、基本类型 基本类型存放在栈区,访问是按值访问的,就是说你可以操作保存在变量中的实际的值。当基本类型的数据赋值时...

  • 面向对象第二天

    值类型与引用类型 值类型:赋值是复制数据内容。 引用类型:赋值的是存储地址。 原型: 函数原型里包含prototy...

  • 理解这 12 个概念,让你的 JavaScript 开发更上一层

    变量赋值(值与引用)JavaScript 总是按照值来给变量赋值。当指定的值是 JavaScript 的五种原始类...

  • JS 数组赋值后原数据随赋值后的数据的变化而变化

    JS在赋值时,原始类型(比如字符串)是复制值,引用类型(比如关联数组)是复制引用。引用类型的赋值相当于地址拷贝,赋...

  • ​Python赋值一切对象皆传址

    Python赋值一切对象皆传址 经常听到编程语言赋值操作中,有传引用,传值等传递方式,但在Python中只有传地址...

  • 值类型数据和引用类型数据的区别

    一、值类型赋值 二、引用类型赋值 三、举栗子 四、总结 在调用函数的时候,传参的过程其实就是用实参给形参赋值的过程...

  • 第十一章、表达式和打印

    赋值语句 ①、赋值语句建立对象引用值。 ②、变量名在首次赋值时被创建。 ③、变量名在引用前必须先赋值。 ④、执行隐...

  • 值类型和引用类型的特征

    值类型和引用类型的赋值 值类型赋值,直接将值复制一份 上面两句代码,在内存中的体现为: 引用类型赋值,是将地址复制...

网友评论

      本文标题:JS 的引用赋值与传值赋值

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