飞比寻常 (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