关于 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 对象链式操作测试代码
Apr 25 Javascript
在jQuery ajax中按钮button和submit的区别分析
Oct 07 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
Nov 24 Javascript
DWZ刷新dialog解决方法
Mar 03 Javascript
JavaScript中的Promise使用详解
Jun 24 Javascript
简要了解jQuery移动web开发的响应式布局设计
Dec 04 Javascript
对象题目的一个坑 理解Javascript对象
Dec 22 Javascript
sencha ext js 6 快速入门(必看)
Jun 01 Javascript
jQuery可见性过滤选择器用法示例
Sep 09 Javascript
AngularJS监听路由的变化示例代码
Sep 23 Javascript
node.js的http.createServer过程深入解析
Jun 06 Javascript
Vue常用的全选/反选的示例代码
Feb 19 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
JAVA/JSP学习系列之二
2006/10/09 PHP
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
PHP静态新闻列表自动生成代码
2007/06/14 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
Python对数据库操作
2016/03/28 Python
Python实现购物车功能的方法分析
2017/11/10 Python
python反编译学习之字节码详解
2019/05/19 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
python怎么对数字进行过滤
2020/07/05 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
教师师德教育的自我评价
2013/10/31 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
生日宴会策划方案
2014/06/03 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书