关于 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 相关文章推荐
JS+CSS设置img在DIV中只显示Img垂直居中的部分
Oct 24 Javascript
js获取内联样式的方法
Jan 27 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
深入浅出讲解ES6的解构
Aug 03 Javascript
bootstrap警告框示例代码分享
May 17 Javascript
vue封装第三方插件并发布到npm的方法
Sep 25 Javascript
js中对象和面向对象与Json介绍
Jan 21 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 Javascript
node.js基础知识汇总
Aug 25 Javascript
Node.js fs模块原理及常见用途
Oct 22 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
Feb 08 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获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
jQuery Mobile 导航栏代码
2013/11/01 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
2019/05/17 jQuery
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
Python群发邮件实例代码
2014/01/03 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
python实现接口并发测试脚本
2019/06/25 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
专业毕业生个性的自我评价
2013/10/03 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
生物学学生自我评价
2014/01/17 职场文书
商品陈列协议书
2014/09/29 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers
HTML+CSS实现导航条下拉菜单的示例代码
2021/08/02 HTML / CSS
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python