关于 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 相关文章推荐
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
利用javascript的面向对象的特性实现限制试用期
Aug 04 Javascript
Jquery中删除元素的实现代码
Dec 29 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
node.js下LDAP查询实例分享
Sep 30 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
Nov 02 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
Jul 05 Javascript
React Native实现地址挑选器功能
Oct 24 Javascript
解决npm管理员身份install时出现权限的问题
Mar 16 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
数字转英文
2006/12/06 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
Python中使用动态变量名的方法
2014/05/06 Python
wxPython事件驱动实例详解
2014/09/28 Python
python创建临时文件夹的方法
2015/07/06 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
python如何建立全零数组
2020/07/19 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
职工运动会感言
2014/02/07 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
python pygame入门教程
2021/06/01 Python