|
主题: 呵呵,我又有问题了!
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#12002/6/25 17:04:09
1.书上说return语句指明将有函数返回的值.return语句是函数内部和外部互相交流和通信的唯一有效渠道.我不明白其中的意思,能否举例子说明一下return有无对函数有什么影响?如果不用return可以吗? 2.以下是书上的一端文字,可是我无法理解,希望有高手可以解释一下: /*这个程序演示了传递给函数的固定参数和不定参数的用法. AddThem函数接收一个固定的字符串参数以及不定数量的数值,在函数里这些数值被求和. */ function addthem (str1) //这是一个固定的参数 { var nopt=addthem.arguments.length;//获得实际参数的个数 var sum=0 var greeting=null //一个空的字符串 for (var i=1;i{ sum+=addthem.arguments.[i]; } greeting="嗨"+strl+",总共是"+sum; return(greeting); } 设想有这样的函数调用: var str=addthem("there",1,3,5,7); 固定的函数参数strl得到了值"there",而不定参数连同固定参数被一起存放在addthem.arguments数组中,整个参数表里的参数个数在addthem.arguments.length中.addthem函数逐一取出除固定参数之外的所有参数并求和,返回了求和的结果.由于1+3+5+7等于16.所以函数返回了字符串"嗨 王平,总共是16" 当然,如果传递给这个函数的参数是固定参数,如同下面的语句: var str=addthem("我只有一个参数"); 则返回字符串"嗨 我只有一个参数,总共是0"
我的问题是:其中的sum+=addthem.arguments.[i]后面的[i]是什么意思?书上说的固定参数和实际参数就是所谓的行参和实参吗?最后的16是如何计算出来的?难道只是单纯的是"there"后面的1,3,5,7相加?strl的值书上到底是取"王平"还是"there"."而不定参数...............返回了求和结果"这段话到底是什么意思? 3.一段javascript源代码:
演示javascript函数中变量的使用
其中为什么只有c进行了变量申明而a,b都没有?其中的var c是不是可以省去?document.wrieln()和document.write()有什么区别呢?执行上述代码以后的结果是: 在函数中, 传递得到的参数para1=2 a=1 b=3 c=100 在函数one以外 a=1 b=3 c=3 程序执行一定是从上而下的执行的可是当执行到para1=para1*2的时候,由于para1根本就没有赋值,para1,para2的值是var对a,b进行赋值以后才有的,那para1=2是怎么来的呢?在函数one的a,b是怎么来的呢?
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#22002/6/25 20:21:04
没有人回答吗?还是我的问题太幼稚?
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#32002/6/26 19:09:01
不会吧?怎么也要会个话吧 实在太幼稚以后我就不发了
|
 有饭
职务:普通成员
等级:2
金币:10.0
发贴:669
注册:2002/3/25 12:50:19
|
#42002/6/26 21:09:34
function addthem (str1) //这是一个固定的参数 { var nopt=addthem.arguments.length;//获得实际参数的个数 var sum=0 var greeting=null //一个空的字符串 for (var i=1;i{ sum+=addthem.arguments.[i]; } greeting="嗨"+strl+",总共是"+sum; return(greeting); } 函数中nopt保存传递给函数的参数个数。然后从第二个参数开始累加总和,保存到SUM中。 所以这句调用函数会出现那样的结果,var str=addthem("there",1,3,5,7); 为什么会是从第二个开始计算呢,你这里有五个参数,但是循环语句是从1开始,addthem.arguments.[i]而i为1的时候,取得的是第二个参数的值,为什么会这样,请参看数组说明!
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#52002/6/27 7:47:53
你是说在对str进行赋值的时候,执行了addthem函数?因为addthem中有5个参数分别是there,1,3,5,7 由于i=1所以addthem.arugment.[i]既addthem.arugment.[1],因为数组是从0开始的,所以1其实就是代表从第二个开始,不知道我的理解对不起?
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#62002/6/27 19:06:11
只回答了我的一个问题啊 继续回答啊
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#72002/6/28 14:37:56
没有人回答吗?
|
 风之翅
职务:普通成员
等级:2
金币:10.0
发贴:540
注册:2001/1/31 14:48:59
|
#82002/6/30 16:09:54
首先要说明一下,最开始one(para1,para2)并没有执行,是在one(a,b)调用后才执行的...看到funciton没有... 所以在one(para1,para2)中,只有c才是函数one的变量,而a,b是在函数one外的变量,而a,b在函数one外是声明了的... 程序的顺序应该是 第一one(a,b)-----------调用one函数 第二one(para1,para2)document.writeln("在函数one中, ");......所以在one函数内 第三document.writeln("在函数one外, ");.....所以在one函数外
编辑历史:[这消息被jhsdx编辑过(编辑时间2002-06-30 16:14:04)]
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#92002/6/30 20:00:29
你是说在浏览器一开始是不执行one函数的?只有当调用one的时候才执行?
|
 风之翅
职务:普通成员
等级:2
金币:10.0
发贴:540
注册:2001/1/31 14:48:59
|
#102002/6/30 21:44:49
当然......
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#112002/7/1 7:29:40
谢谢 明白了 还有第一个问题没回答
|
 5D限制级
职务:普通成员
等级:6
金币:10.0
发贴:4970
注册:2001/8/16 14:52:34
|
#122002/7/1 8:57:47
sub add() a=1+1 return a; end sub b=add() 把A的值返回给B
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
#132002/7/1 11:49:41
应该是把A的值赋给B吧?
|
 风之翅
职务:普通成员
等级:2
金币:10.0
发贴:540
注册:2001/1/31 14:48:59
|
|
 比特空间
职务:普通成员
等级:3
金币:10.0
发贴:853
注册:2002/6/16 11:56:52
|
|