关于 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实现的鼠标经过时播放声音
May 18 Javascript
jQuery 全选/反选以及单击行改变背景色实例
Jul 02 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
Nov 18 Javascript
js实现div模拟模态对话框展现URL内容
May 27 Javascript
jQuery基本过滤选择器用法示例
Sep 09 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
ES6中Math对象新增的方法实例详解
Apr 25 Javascript
常用的9个JavaScript图表库详解
Dec 19 Javascript
利用jqprint插件打印页面内容的实现方法
Jan 09 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
Nov 28 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
Nov 06 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
PHP7.0版本备注
2015/07/23 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
前端性能优化及技巧
2016/05/06 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
使用django实现一个代码发布系统
2019/07/18 Python
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
给导游的表扬信
2014/01/10 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
公立医院改革实施方案
2014/03/14 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
2014年小学教研工作总结
2014/12/06 职场文书
英文道歉信
2015/01/20 职场文书
文化大革命观后感
2015/06/17 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
争做文明公民倡议书
2019/06/24 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers