美文网首页
数组引用问题

数组引用问题

作者: 喵喵的记事本 | 来源:发表于2020-08-18 09:18 被阅读0次

var a=[1,2,3];

var b=a;

a=[4,5,6];

alert(b);//[1,2,3]

面试时被问到这样一个问题,竟然从来没试过... 当时直接的理解,数组是引用类型,应该是传递的是引用,所以b也是[4,5,6],于是错了。

那么,js数组传递是跟基本类型一样创建副本吗?

我又做了如下测试:

var a=[1,2,3];

var b=a;

a.pop();

alert(b);//[1,2]

这样好像又是引用传递了? 晕了

答案:

a = [4,5,6];//改变的是a引用本身,没有改变数组对象 

a.pop();//改变的是数组对象,a引用没有改变。 

b = a;//该操作后,b直接指向数组对象,不是b指向a,a再指向数组。所以改变a引用并不会对b引用造成影响,改变数组对象可以造成影响。

如图:

相关文章

  • 数组引用问题

    var a=[1,2,3];var b=a;a=[4,5,6];alert(b);//[1,2,3] 面试时被问到...

  • PHP数组循环引用问题

    $data = array(‘a’, ‘b’, ‘c’); foreach($data as $key=>$val...

  • 内存中的数组

    数组是一种观念引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。 数组引用变量只是一...

  • 综合应用-深度克隆[JavaScript_012]

    问题背景 JavaScript值类型主要是分为引用值(对象,数组等),非引用值(boolean,string,nu...

  • 编译器笔记30-中间代码生成-数组引用的翻译

    数组引用的翻译 L表示的是一个数组元素。将数组引用翻译成三地址码时要解决的主要问题是确定数组元素的存放地址,也就是...

  • Golang之数组和切片

    引用 数组、字符串和切片 Go数组中的索引问题 深入解析 Go 中 Slice 底层实现 Golang 入门 : ...

  • java 关于数组引用的问题

    练习leetcode 189 题目时出现的问题 这段代码在测试中即使最后函数中的nums已经修改了,但是函数外的值...

  • 疯狂java讲义第四章笔记(部分)

    数组作为引用类型的运行机制 内存中的数组 数组引用变量只是一个引用,相当于一个指针,指向内存中的数组的对象。 数组...

  • 引用类型数组

    数组是对象 在Java中,数组属于引用类型数据数组数据在堆中存储,数组变量属于引用类型,存储数组对象的地址信息,指...

  • 《Thinking in Java》学习——15章泛型(二)

    通配符 1.数组具有协变性:可以向导出类型的数组赋予基类型的数组引用: 上面的代码不会出现编译问题,因为Apple...

网友评论

      本文标题:数组引用问题

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