function 函数名 ( 参数列表 )
{
函数的内容
}
例:
function test(a) { System.inform(a); }
function func(a, b, c, d)
{
test(a);
test(b);
test(c);
test(d);
return a+b-c*d;
}
函数名( 参数 )
没有参数的时候就写成 函数名( )
。将复数的表达式指定为参数的时候应该用逗号分隔。例:
func();
func(1+2, 1-2);
func(func2());
例:
func(,1); // 会被当作指定了 void, 1
func(,); // 会被当作指定了 void, void
例:
function test(a, b, c)
{
// 这个时候就能使用 a 和 b 和 c 这3个变量了,
// 传入的3个参数被代入到这3个变量中了。
// 像 test(1, 2, 3) 这样调用的话, a 中会被代入 1 ,
// b 中会被代入 2, c 中会被代入 3 。
}
例:
function test(a, b)
{
// 如果像 test(1) 这样调用,a 中会被代入 1 ,b 中会被代入 void 。
// 如果像 test(1,2,3) 这样调用, a 中会被代入 1, b 中会被代入 2 ,3 会被忽略
}
例:
function test(a = -1, b = 1)
{
// 如果……
// 像 test() 这样调用的话, a=-1, b=1
// 像 test(5) 这样调用的话, a=5, b=1
// 像 test(void,void) 这样调用的话, a=-1, b=1
// 像 test(,4) 这样调用的话, a=-1, b=4
}
例:
function test
{
// 不接受参数的函数
}
例:
var func = function(i) { return i*5; };
var func2 = function { System.inform("hoge"); };
var v = func(); // 调用 func 函数
func2(); // 调用 func2 函数
例:
function test2(a, b)
{
// 函数的内容
}
function test()
{
test2(...);
// 将传给 test 的参数,以参数传入时的内容和数量传给 test2
}
test(1, 2);
// 因为 test 函数没有参数列表,1 和 2 这两个参数在传入 test 函数后会被忽略,
// 但是,在 test 中被调用的 test2 函数仍然会接收到这两个参数。
function test1(a, b = 2)
{
test2(...);
// 将传给 test1 的参数,以参数传入时的内容和数量传给 test2
}
test1(1);
// 在参数 1 被传入 test1 之后,因为参数数量不足,默认值 2 会被代入到 b 中,
// 但是,在 test1 中被调用的 test2 函数只会接收到1个参数,就是 1 ,
// 而不会接收到那个默认值 2 ,因为那不是调用函数时传入的参数。
例:
function func(args*)
{
// args 就是将传入这个函数的参数作为元素的数组
// 也就是说,像 func(1, 2, 3, 4) 这样调用的话,
// 会按照 1 2 3 4 的顺序将4个参数作为元素装入 args 中。
}
例:
function func(x, args*)
{
// 也就是说,像 func(1, 2, 3, 4) 这样调用的话,
// x 中会被代入 1 。然后, 2 3 4 这三个值会依次装入 args 。
// 像 func(1) 这样调用的话,因为参数数量不足,
// args 中就是空的了。
}
例:
var args = [1, 2, 3, 4];
func(args*);
// args 中包含 1 2 3 4 这 4个元素,
// 所以上面的调用和 func(1, 2, 3, 4); 具有相同效果。
func(0, args*, 5);
// 像这样把数组夹在其他参数的中间也是可以的。
// 这样和 func(0, 1, 2, 3, 4, 5); 具有相同效果。
例:
function func(func_array, *)
{
// 经由 func_array 参数传入的函数数组中的函数,
// 会按照他们在 func_array 数组中的位置顺序依次被调用,
// 传入 func 的第二个以及之后的参数在各个函数被调用时
// 也会以传进来时的状态传入这些函数。
for(var i = 0; i < func_array.count; i++)
func_array[i](i, *);
}
例:
function func(ar*) { func2(ar*); }
function func(*) { func2(*); }
// 上面的两个函数的作用是完全一样的,但是下面的那个效率更高
例:
function func() { func2(...); }
function func(*) { func2(*); }