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


Posted in Javascript onDecember 28, 2012

按值和按引用的比较
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
Javascript 相关文章推荐
简单选项卡 js和jquery制作方法分享
Feb 26 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
May 19 Javascript
Javascript闭包用法实例分析
Jan 23 Javascript
详解js跨域原理以及2种解决方案
Dec 09 Javascript
原生js实现图片轮播特效
Dec 18 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 Javascript
JavaScript数据存储 Cookie篇
Jul 02 Javascript
微信小程序 wxapp导航 navigator详解
Oct 31 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
Vue-cli-webpack搭建斗鱼直播步骤详解
Nov 17 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
Jan 09 Javascript
微信小程序中target和currentTarget的区别小结
Nov 06 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
Dec 28 #Javascript
Javascript 加载和执行-性能提高篇
Dec 28 #Javascript
javascript延时加载之defer测试
Dec 28 #Javascript
JavaScript(js)设置默认输入焦点(focus)
Dec 28 #Javascript
Javascript图像处理—平滑处理实现原理
Dec 28 #Javascript
js获取网页高度(详细整理)
Dec 28 #Javascript
前台js改变Session的值(用ajax实现)
Dec 28 #Javascript
You might like
PHP 开发工具
2006/12/06 PHP
php 动态多文件上传
2009/01/18 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php常见的魔术方法详解
2014/12/25 PHP
discuz目录文件资料汇总
2014/12/30 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
Python判断变量是否已经定义的方法
2014/08/18 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
python中adb有什么功能
2020/06/07 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
工商管理专业实习生自我鉴定
2013/09/29 职场文书
函授本科毕业生自我鉴定
2013/10/16 职场文书
顶岗实习计划书
2014/01/10 职场文书
考试违纪检讨书
2014/02/02 职场文书
售后求职信范文
2014/03/15 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
建筑工地标语
2014/06/18 职场文书
统计员岗位职责
2015/02/11 职场文书
幼师大班个人总结
2015/02/13 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers