美文网首页让前端飞Web前端之路我爱编程
复制js变量问题(面试常考)

复制js变量问题(面试常考)

作者: 我是一名老java | 来源:发表于2018-05-24 14:03 被阅读21次

js变量中存储了两种不同数据结构的值 基本类型值引用类型值

基本类型值值的是简单的数据段,而引用类型值是指那些可能由多个值构成的对象。

前端面试时经常会有一个问题:复制变量值。 这道题考察的就是对基本类型值和引用类型值理解了。

复制基本类型值

var num1 = 2;
var num2 = num1

此时,num1中保存的值是2。当使用num1的值来初始化num2时,num2中也保存了值2。但num2中的2与num1中的2是完全独立,互不影响的,该值知识num1中2的一个副本。此后对两个变量进行任何操作都互不影响。

复制引用类型值

var obj1 = new Object();
var obj2 = obj1;
obj1.name = "xiaoming";
alert(obj2.name)

当从一个变量向另一个变量复制引用类型值时,同样也会将存储在变量对象中的值复制一份放在为新变量分配的空间里,但是这个值的副本其实是一个指针,这个指针指向存储在堆中的一个对象。复制结束后,两个变量其实引用的是一个对象。因此,改变一个变量就会影响到另一个变量,因为此刻改变的是堆中共同引用的对象。

值得注意的一点:js中函数传递参数的时候都是按值传递的,就是像基本类型值复制一样的操作,即使参数是一个对象,也是按值传递,不是按引用传递的。

相关文章

  • 复制js变量问题(面试常考)

    js变量中存储了两种不同数据结构的值 基本类型值 和引用类型值。 基本类型值值的是简单的数据段,而引用类型值是指那...

  • js开发 面试常考基础算法题

    js 开发面试常考基础算法题 1 不需要借助第三个临时变量,实现两个变量的交换 2 确保字符串的每个单词首字母都大...

  • 变量声明提升

    变量声明提升是JS中一个基础的问题,同时也是对JS词法作用域认识的一个提升。在JS面试题中,关于变量声明提升的问题...

  • 交换两个变量的值

    java存在三种方法交换变量值 1.中间变量 2.算术运算 3.位运算 其中第三种面试常考。

  • JS需要注意的内容

    最近学生面试比较多,关于JS部分的常见面试问题,做一个简单的总结 1.变量提升 JS里的很多代码规则和C,Java...

  • JS走过的第一个大坑

    JS浅复制问题:复制对象或者数组时,直接把对象复制给另一个变量,其实两个对象包括内在属性都是指向同一块内存地址,导...

  • 5年Java高工经验,我是如何成功拿下滴滴D7Offer的?

    面试经验分享 1.笔试常见的问题 面试常见的问题上面给的面试题链接基本都有。我只提几点: 写SQL:写SQL很常考...

  • 前端基础JS变量类型和计算常考面试题知识

    变量的类型分为值类型和引用类型 typeof运算符 识别所有值类型 识别函数 判断是否是引用类型 手写深拷贝 类型...

  • 与闭包相关的问题

    感觉js闭包可以引发一系列面试中比较常考的问题,打算单独写一篇文章加以总结 如果之前对作用域的相关知识点了解的话,...

  • js常考算法

    1. 一个数组,有2n个元素,其中有个数字重复出现了n次。其他n个数字都是不相同的。 空间复杂度O(1)。时间复...

网友评论

    本文标题:复制js变量问题(面试常考)

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