- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Flash AS3.0 教程 函数之形式参数和实际参数
Flash AS3.0 教程 函数之形式参数和实际参数
Flash AS3.0 教程 函数之形式参数和实际参数函数的参数是外界与函数内部通信的方法,对于有参函数来说,函数调用时函数有数据传递的关系。
看代码:
//调用函数
max(5,7);
//定义函数
function max(x:int,y:int):int
{
if(x y)
{
x = x;
} else {
x = y;
}
return x;
}
如果一个函数有返回值,可使用 return语句,并在定义函数时声明返回值的类型。
上面的代码在函数调用过程中发生了数据传递,先把5和7传递给x和y,再通过比较后返回大的值7,传递给函数max(),所以max(5,7)的值为7。
在定义函数时,括号中的变量称为形式参数(简称形参)。上面定义max()函数时的x和y就是形参。在调用函数时,函数名后面括号中的变量或表达式称为实际参数(简称实参)。如调用max()函数时的5和7。
函数的实参可以是任意数据类型的变量或表达式。
参数对于函数来说是非常重要,一个好的函数其参数应是不多不少。例如,toFixed()函数可以保留小数点的倍数,但它返回的是字符串。下面编写一个返回值是数字的保留小数点的函数:
var a:Number = 2.55555;
//保留两位小数并输出
trace(保留小数点(a,2);
//定义函数
function 保留小数点(a:Number,b:uint):Number
{
//10的b次方
var t:uint = Math.pow(10,b);
//a*t取整后除t并返回
return Math.round(a*t) / t;
}
保留小数点的函数,需要两个参数,一个代表要保留小数点的数值,一个是保留小数点的位数。
对于形参很多的函数,可用对象来代替,下面函数求两点间的距离,用对象p1代表第一个点的坐标,用p2代表第二点的坐标:
//调用函数并把返回值赋值给变量d
//调用时定义两个对象的属性
var d:Numbet = distance({x:100,y:200},{x:100,y:100});
//输出距离
trace(d);
function distace(p1:Object,p2:Object):Number
{
var x:Number = p1.x - p2.x;
var y:Number = p1.y - p2.y;
var dis:Number = Math.sqrt(x*x + y*y);
return dis;
}
定义对象一般有new Object(),的形式,但也可通过{}运算符来定义对象,如:“{x:100,y:200}”相当于如下代码:
var obj1:Object = new Object();
obj1.x = 100;
obj1.y = 200;
按值还是按引用来传入参数
函数的参数可以是任何数据类型的变量,数据类型分为简单数据类型和复杂数据类型。
按值传入,那么参数对象会复制一份副本供函数内部操作,参数本身不会受影响,按引用传入,则不复制副本,函数内操作参数对象的引用,会改变参数对象的状态。
在AS3中,所有的参数都是按引用传入的。只不过,简单数据类型是不变对象,传引用和传值的效果一样,所以,如果参数是简单数据类型,可看成是传值,如果参数是复杂数据类型,就是传引用。
对于简单数据类型的参数来说,函数调用开始时,发生了从实参向形参的值传递,函数调用结束时形参并未向实参进行值传递,这种数据传递称为值传递。
看下面的测试程序:见例:值传递
var a:int = 1;
trace( 函数调用前,实参a=+a);
test(a);
trace(函数调用后,实参a=+a);
function test(x):void
{
x += 5;
trace(调用函数中,形参x=+x);
}
输出结果为:
函数调用前,实参a = 1
调用函数中,形参x = 6
函数调用后,实参a = 1
从测试结果看调用函数时,形参的值开始时是由实参传递来的值1,加5后变为6,但形参的值以身试法后并没有传递给实参,所以函数调用前后实参的值都是1。
函数调用开始时,发生了从实参向形参的数据传递,函数调用结束时形参也向实参进行数据传递,这种数据传递称为引用传递。
看下面的测试程序:见例:传引用
//建立一个对象
var person:Object = new Object();
//动态创建属性age
person.age = 20;
trace(函
您可能关注的文档
- Java:按值传递还是按引用传递详细解说.docx
- 七年级上信息练习题.doc
- 安装调试管理规定(新).doc
- php综合复习题大全.docx
- 引用传递实例分析.doc
- 引用传递进阶分析.doc
- 第四章:数组的引用传递.docx
- about a decade development achievements and characteristics of administrative sciences - visit high xiaoping executive vice president of the chinese public administration society(大约十年管理科学发展成就和特点u2014u2014访问高小平中国公共管理社会的执行副总裁).doc
- about a dream speech(关于梦想的演讲).doc
- about a hundred years anniversary activities to promote the use of culture _ the hospital network(大约一百年周年纪念活动,促进文化_医院网络的使用).doc
文档评论(0)