关于 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中this关键字使用方法详解
Mar 08 Javascript
js实现iframe动态调整高度的代码
Jan 06 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
Dec 08 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
Nov 26 Javascript
jquery.validate.js插件使用经验记录
Jul 02 Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
Nov 23 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
详谈commonjs模块与es6模块的区别
Oct 18 Javascript
node中的cookie的具体使用
Sep 13 Javascript
layui的layedit富文本赋值方法
Sep 18 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
cmd下运行php脚本
2008/11/25 PHP
PHP新手入门学习方法
2011/05/08 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
Prototype框架详解
2015/11/25 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
layui实现数据分页功能
2019/07/27 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
Python 字符串操作方法大全
2014/03/11 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
简析Python的闭包和装饰器
2016/02/26 Python
python中列表和元组的区别
2017/12/18 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
python实现文法左递归的消除方法
2020/05/22 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
大学生职业生涯规划范文
2013/12/31 职场文书
运动会观后感
2015/06/09 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
详解Redis瘦身指南
2021/05/26 Redis
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS