关于 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 25 Javascript
js控制href内容的连接内容的变化示例
Apr 30 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
Aug 22 Javascript
JavaScript设计模式之外观模式实例
Oct 10 Javascript
AngularJS实现元素显示和隐藏的几个案例
Dec 09 Javascript
全面解析Javascript无限添加QQ好友原理
Jun 15 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
原生js获取left值和top值的三种方法
Aug 02 Javascript
JS控制鼠标拒绝点击某一按钮的实例
Dec 29 Javascript
js取小数点后两位四种方法
Jan 18 Javascript
微信小程序登录数据解密及状态维持实例详解
May 06 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
Jun 21 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
基于mysql的论坛(4)
2006/10/09 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
php不用正则验证真假身份证
2013/11/06 PHP
浅析php原型模式
2014/11/25 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
wxPython实现带颜色的进度条
2019/11/19 Python
Python FFT合成波形的实例
2019/12/04 Python
为什么是 Python -m
2020/06/19 Python
Python 如何查找特定类型文件
2020/08/17 Python
简单介绍Object类的功能、常用方法
2013/10/02 面试题
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
鲜果饮品店创业计划书
2014/01/21 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
助学贷款贫困证明
2014/09/23 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis