关于 byval 与 byref 的区别分析总结

 更新时间:2007年10月08日 16:37:22   作者:  
二者区别:
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对象和字串之间的转换实例探讨

    从对象的格式可以看出,如果字串的格式定义成 json 格式的, 就可以直接转换为obj了,感兴趣的朋友可以参考下哈
    2013-04-04
  • PyQt中QLabel标签组件使用指南

    PyQt中QLabel标签组件使用指南

    QLabel是PyQt中用于显示文本和图像的组件,本文详细介绍了其基本用法和高级特性,首先,介绍如何创建QLabel,以及如何用它来显示图像,接着,探讨了如何使用HTML标签格式化文本,设置文本对齐方式,以及如何实现自动换行
    2024-10-10
  • uniapp蓝牙连接的通用步骤

    uniapp蓝牙连接的通用步骤

    这篇文章主要给大家介绍了关于uniapp蓝牙连接的通用步骤,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • JavaScript实现通过滑块改变网页颜色

    JavaScript实现通过滑块改变网页颜色

    这篇文章主要为大家详细介绍了JavaScript实现通过滑块改变网页颜色,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 微信小程序自定义纯净模态框(弹出框)的实例代码

    微信小程序自定义纯净模态框(弹出框)的实例代码

    这篇文章主要介绍了微信小程序自定义纯净模态框(弹出框)的实例代码,代码简答易懂,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • JavaScript实现标题栏文字轮播效果代码

    JavaScript实现标题栏文字轮播效果代码

    这篇文章主要介绍了JavaScript实现标题栏文字轮播效果代码,涉及JavaScript基于时间函数及流程控制操作标题栏文字的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • 详解layui laydate选择时间的回调方法

    详解layui laydate选择时间的回调方法

    这篇文章主要介绍了layui laydate选择时间的回调方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 详解Require.js与Sea.js的区别

    详解Require.js与Sea.js的区别

    RequireJS 和 Sea.js 都是模块加载器,倡导模块化开发理念,核心价值是让 JavaScript 的模块化开发变得简单自然。这篇文章给大家简单介绍了Require.js与Sea.js的区别,感兴趣的朋友一起看看吧
    2018-08-08
  • List Information About the Binary Files Used by an Application

    List Information About the Binary Files Used by an Applicati

    List Information About the Binary Files Used by an Application...
    2007-06-06
  • JavaScript动态生成二维码图片

    JavaScript动态生成二维码图片

    本文给大家介绍js动态生成二维码图片的相关内容,感兴趣的朋友一起学习吧
    2016-04-04

最新评论