关于 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 事件查询综合
Jul 13 Javascript
JavaScript浏览器选项卡效果
Aug 25 Javascript
鼠标滑上去后图片放大浮出效果的js代码
May 28 Javascript
一个关于jqGrid使用的小例子(行按钮)
Nov 04 Javascript
获取非最后一列td值并将title设为该值的方法
Oct 30 Javascript
键盘KeyCode值列表汇总
Nov 26 Javascript
JavaScript也谈内存优化
Jun 06 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
JavaScript函数表达式详解及实例
May 05 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
js实现div色块拖动录制
Jan 16 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实现图片局部打马赛克的方法
2015/02/11 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
php实现留言板功能
2017/03/05 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
PHP代码加密的方法总结
2020/03/13 PHP
JavaScript 密码强度判断代码
2009/09/05 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
JavaScript函数详解
2014/11/17 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
基于daterangepicker日历插件使用参数注意的问题
2017/08/10 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
Python简单定义与使用二叉树示例
2018/05/11 Python
python pygame实现2048游戏
2018/11/20 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
matplotlib 三维图表绘制方法简介
2020/09/20 Python
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
同学聚会欢迎辞
2014/01/14 职场文书
指导教师推荐意见
2015/06/05 职场文书
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技