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 跳转页面延迟2种方法
Mar 29 Javascript
JS实现向表格行添加新单元格的方法
Mar 30 Javascript
js仿黑客帝国字母掉落效果代码分享
Nov 08 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
Jul 10 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
js 概率计算(简单版)
Sep 12 Javascript
webpack 静态资源集中输出的方法示例
Nov 09 Javascript
如何使用less实现随机下雪动画详解
Jan 02 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
Apr 22 Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 Javascript
JavaScript canvas绘制圆弧与圆形
Feb 18 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获取文件类型和文件信息的方法
2015/07/10 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
python获取list下标及其值的简单方法
2016/09/12 Python
Python中字符串的修改及传参详解
2016/11/30 Python
Python列表和元组的定义与使用操作示例
2017/07/26 Python
Windows下python3.7安装教程
2018/07/31 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python多线程同步之文件读写控制
2021/02/25 Python
python应用文件读取与登录注册功能
2019/09/23 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
python如何查看网页代码
2020/06/07 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
《最后的姿势》教学反思
2014/02/27 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
小学运动会开幕词
2015/01/28 职场文书
全陪导游词
2015/02/04 职场文书
讲文明倡议书
2015/04/29 职场文书
教师节主题班会方案
2015/08/17 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python