关于 byval 与 byref 的区别分析总结


Posted in Javascript onOctober 08, 2007

二者区别:
byval 传递数值,实参和形参分处不同的内存单元,互不干扰! 
byref 传递地址,实参和形参占用相同的内存单元,形参变则实参变!!!!!!
通俗理解:
byval 一去不复返 
byref 进去再出来,可能被更新!
在JavaScript中:
Boolean,Number,String型的参数是按值传递的 ==> 相当于VBS中的ByVal;
而Object型的参数(包括JS对象,Array对象,Function对象等),是按引用传递 ==> 相当于VBS中的ByRef

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">  
<head>  
<title> 函数传值测试 </title>  
<meta http-equiv="content-type" content="text/html; charset=utf-8" />  
<meta name="author" content="枫岩,CNLEI" />  
<meta name="copyright" content="cnlei.y.l@gmail.com , http://www.cnlei.com" />  
</head>  
<body>  
<script type="text/javascript">  
<!--  
function Num(n){n=n*2;}//Number型的参数,按值传递的 ==> 相当于VBS中的ByVal;  
function Obj(){}  
Obj.prototype.show = function(o){ //JS对象,是按引用传递 ==> 相当于VBS中的ByRef  
  o.toString = function(){  
    return("{id:"+this.id+",desc:"+this.desc+"}");  
  }  
}  
function Func(f){ //Function对象,是按引用传递 ==> 相当于VBS中的ByRef  
  f.show = function(o){  
    o.toString = function(){  
      return("{id:"+this.id+",desc:"+this.desc+",toString:function(){} }");  
    }  
  }  
}  var N;  
N=1;  
alert(N);  
Num(N);  
alert(N);  
var O;  
O = {  
  id:"001",  
  desc:"编号说明",  
  toString: function (){  
    return null;  
  }  
};  
var F = new Obj();  
var F2 = new Obj();  
alert(O.id+"\n"+O.toString());  
F.show(O);  
alert(O.id+"\n"+O.toString());  
Func(F);  
F.show(O);  
alert(O.id+"\n"+O.toString());  
//-->  
</script>  
</body>  
</html> 
Javascript 相关文章推荐
用javascript实现的激活输入框后隐藏初始内容
Jun 29 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
Jun 14 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
Javascript定义类(class)的三种方法详解
Mar 13 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
js求数组中全部数字可拼接出的最大整数示例代码
Aug 25 Javascript
JS基于for语句编写的九九乘法表示例
Jan 04 Javascript
vue+iview/elementUi实现城市多选
Mar 28 Javascript
简述pm2常用命令集合及配置文件说明
May 30 Javascript
H5实现手机拍照和选择上传功能
Dec 18 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
Aug 17 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 Javascript
JavaScript加密解密7种方法总结分析
Oct 07 #Javascript
JavaScript 入门·JavaScript 具有全范围的运算符
Oct 01 #Javascript
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
Oct 01 #Javascript
javascript入门·图片对象(无刷新变换图片)\滚动图像
Oct 01 #Javascript
javascript入门·对象属性方法大总结
Oct 01 #Javascript
JS创建优美的页面滑动块效果 - Glider.js
Sep 27 #Javascript
[HTML/CSS/Javascript]WWTJS
Sep 25 #Javascript
You might like
php二维数组转成字符串示例
2014/02/17 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
python学习教程之使用py2exe打包
2017/09/24 Python
详解用python实现简单的遗传算法
2018/01/02 Python
Python内存读写操作示例
2018/07/18 Python
对python生成业务报表的实例详解
2019/02/03 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
制药工程专业毕业生推荐信
2013/12/24 职场文书
求职信的要素有哪些呢
2013/12/26 职场文书
代办委托书怎样写
2014/04/08 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
2014年团支部工作总结
2014/11/17 职场文书
个人自荐书怎么写
2015/03/26 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
ORACLE查看当前账号的相关信息
2021/06/18 Oracle