1.定义(3种)
function test(a1,a2) { return a1+a2; }
var test=function(a1,a2) { return a1+a2; };
var test= new Function("a1","a2","a3","return a1+a3");
b.语法1不允许在同一页面内出现于函数名同名的变量,否则无法执行
c.语法2允许在同一页面出现于函数名同名的变量,视先后关系决定是否可以执行
d.形式参数根据需要可有可无
e. 返回值:函数体中通过return关键字返回一个值,如果函数无明确的返回值,或调用了没有参数的 return 语句,那么它真正返回的值是 undefined
f.Function()构造函数的参数必须是字符串型,最后一个为函数主体("函数体"),即要执行的代码
2.调用
实际参数根据函数定义决定是否需要,形参无则实参不需要
示例:
<body> <script type="text/javascript"> function test(){ console.debug("hello!") } </script> <input type="button" value="test" onclick="test()"> <a href="javascript:test()">你好</a> </body>
3.参数
b.理论上存放实参的数量仅受内存大小的限制
c. arguments.length可以获取实参数量
4.变量作用域
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS自定义函数</title> <script type="text/javascript"> var a=10; function test1(){ console.debug(++a); } function test2(){ var a=20; console.debug("全局a:"+window.a); console.debug("全局a:"+this.a); console.debug("局部a:"+a); b=30;//在函数内部直接对变量b进行赋值,而不是通过var进行定义 } function test3(){ var b=40; console.debug("全局b:"+window.b); console.debug("局部b:"+b); } </script> </head> <body> <input type="button" value="test1" onclick="test1()"> <input type="button" value="test2" onclick="test2()"> <input type="button" value="test3" onclick="test3()"> <input type="button" value="test4" onclick="test4()"> </body> </html>
后台运行结果: