javascript的字符串按引用复制和传递,按值来比较介绍与应用

 更新时间:2012年12月28日 10:31:27   作者:  
字符串是按引用复制和传递的,但是是按值来比较的;当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中,需要的朋友可以参考下
按值和按引用的比较
Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中。然后,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。

对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。实际上只有一个实体;“复本”并不是一个真正的复本,而只是该数据的又一个引用。

当按引用比较时,要想比较成功,两个变量必须参照完全相同的实体。例如,两个不同的 Array 对象即使包含相同的元素也将比较为不相等。要想比较成功,其中一个变量必须为另一个的参考。要想检查两个数组是否包含了相同的元素,比较 toString() 方法的结果。

最后,字符串是按引用复制和传递的,但是是按值来比较的。请注意,假如有两个 String 对象(用 new String("something") 创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。

字符串是按引用复制和传递的,但是是按值来比较的。请注意,假如有两个 String 对象(用 new String("something") 创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。
复制代码 代码如下:

var str1="aa";
var str2=new String("aa");
var str3=str2;
function test(p){
var str4=p;
console.log(str4===str2);
}
console.log(str1===str2); //false
console.log(str3===str2); //true
test(str1);//false
test(str2);//true

相关文章

  • three.js欧拉角和四元数的使用方法

    three.js欧拉角和四元数的使用方法

    这篇文章主要给大家介绍了关于three.js欧拉角和四元数的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • js removeChild 方法深入理解

    js removeChild 方法深入理解

    下面小编就为大家带来一篇js removeChild 方法深入理解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 让IE8支持DOM 2(不用框架!)

    让IE8支持DOM 2(不用框架!)

    众所周知,IE8开放了对DOM原型的支持以及ECMA v5的两个新方法——Object.defineProperty和Object.getOwnPropertyDexcriptor(单词好长……),并且这两个新方法居然只能用于DOM。
    2009-12-12
  • JS在Array数组中按指定位置删除或添加元素对象方法示例

    JS在Array数组中按指定位置删除或添加元素对象方法示例

    这篇文章主要给大家介绍了关于JS在Array数组中按指定位置删除或添加元素对象的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JS具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解

    js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解

    今天小编就为大家分享一篇关于js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • js基础之DOM中元素对象的属性方法详解

    js基础之DOM中元素对象的属性方法详解

    下面小编就为大家带来一篇js基础之DOM中元素对象的属性方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • 使用forEach和ES6实现tab切换的示例代码

    使用forEach和ES6实现tab切换的示例代码

    tab切换在很多菜单栏中都可以用到,本文主要介绍了使用forEach和ES6实现tab切换的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • bootstrap监听滚动实现头部跟随滚动

    bootstrap监听滚动实现头部跟随滚动

    这篇文章主要为大家详细介绍了bootstrap监听滚动实现头部跟随滚动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • webpack中Loader和Plugin的区别小结

    webpack中Loader和Plugin的区别小结

    本文主要介绍了webpack中Loader和Plugin的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • 使用JavaScript实现文本收起展开(省略)功能

    使用JavaScript实现文本收起展开(省略)功能

    省略号,作为一种常见的文本处理方式,在很多情况下都十分常见,特别是当我们需要在省略号后面添加额外文字时,本文为大家介绍了使用JavaScript实现文本收起展开功能的相关方法,希望对大家有所帮助
    2024-04-04

最新评论