飞比寻常 (JOE) 生,简单,活,简单,生活,不简单!
JOE个人网站
JOE个人网站,不仅仅是一个网站,更像是一个展现自我的平台,致力于让朋友们都可以
有所感触,有所收获。
五、函数 function test() { alert('我来自test'); } test(); 1、JS中,自定义函数不能带默认值: function test(n=12) { alert(n); } test(); //这是错误的 注释:在最新版的火狐浏览器中,是支持默认值的; 2、给默认值的方法: function test(n) { if(typeof(n)=='undefined') { n=12; } alert(n); } test(); //输出12 3、以下书写是正确的 function test(n,m,k) { alert(n); } test(10); 3、可变长度参数列表 (arguments封装了函数中实参部分的所有内容,可以用for in 方式遍历出来) function test() { for(n in arguments) { document.write(arguments[n]+'<br/>'); } } test('a','b','c','d'); 补充: 调试的时候,经常使用的方法: alert 弹框输出; document.write 输出到文档中; 4、获取arguments的长度 (arguments.length) for(var i=0;i<arguments.length;i++) { document.write(arguments[i]); } 5、函数的嵌套定义 function myfun() { function mysum(x,y) { alert(222); return x+y; } alert(111); return mysum(1,2); } a、嵌套的子函数,只能出现在函数中,不能出现在ifelse这样的分支结构以及while这样的循环结构中; b、嵌套的子函数,只能在函数中调用,不能在外层调用; 补充:不是重点,了解即可: var f=new Function('x','y','var z=x+y;return z;'); alert(f(1,5)); //6 6、变量函数 function test() { alert(123); } //alert(test); var temp=test; alert(temp); //输出的效果和test一样 temp(); //所以我们可以在这里加括号调用 7、匿名函数 var temp=function() { alert(123); } //alert(temp); temp(); 8、回调函数 function test(x,func) { alert(x+func(10)); } function demo(n) { return n*2; } test(1,demo); //21 ----------------------- function test(x,func) { alert(func(x)); } function demo(n) { return n*2; } test(1,demo); //2 ----------------------- function test(x,func) { alert(func(x)); } function er(n) { return n*2; } function san(n) { return n*3 } test(1,san); //3 ---------------------- function test(x,func) { alert(func(x)); } test(1,function(n) { return n*3; }); //3 六、变量的作用域 核心:JS中全局的变量可以在局部中使用,但局部变量不可以在全局中使用 全局变量 1、在函数体外部通过var声明的变量是全局变量 2、在函数体内部不通过var声明的变量也是全局变量 3、在函数体外部没有通过var声明的变量也是全局变量 局部变量 1、在函数体内部通过var声明的变量是局部变量 2、形参属于局部变量 注意:如果在函数体里面声明了和全局变量同名的局部变量,则该函数体内部的同名的全局变量相当于不存在(undefined) 实例: 1、 var n=5; function test() { var n=10; alert(n); } test(); //10 alert(n); //5 2、 var n=5; function test() { n=10; alert(n); } test(); //10 3、 var n=10; function test() { alert(n); var n=5; } test(); //undefined alert(n); //10 4、 var n=10; function test() { var n=5; function demo() { return n; } } alert(test()); //5 5、 var n=10; function test() { var n=5; function demo() { return n; } return demo; } alert(test()()); //5