关于 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 相关文章推荐
niceTitle 基于jquery的超链接提示插件
May 31 Javascript
JQuery中getJSON的使用方法
Dec 13 Javascript
JS按位非(~)运算符与~~运算符的理解分析
Jul 31 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
Nov 14 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
Jun 26 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
元素全屏的设置与监听实例
Nov 28 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
浅谈node.js 命令行工具(cli)
May 10 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套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
php格式化json函数示例代码
2016/05/12 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
js玩一玩WSH吧
2007/02/23 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
javascript History对象原理解析
2020/02/17 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
python协程用法实例分析
2015/06/04 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
高级人员简历的自我评价分享
2013/11/03 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
法制教育主题班会
2015/08/13 职场文书
工作一年自我鉴定
2019/06/20 职场文书
Django drf请求模块源码解析
2021/06/08 Python
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python
服务器间如何实现文件共享
2022/05/20 Servers
MySQL transaction事务安全示例讲解
2022/06/21 MySQL