js函数
函数的一些要求:
function 定义某一个函数 命名最好要有语义化,
例:test(); //直接调用函数名;
1 function test(){ 2 alert('this is a test'); 3 }
函数名称最好是驼峰,函数名称严格区分大小写,
1 function TEST(){ 2 alert('hello king'); 3 } 4 TEST(); //弹出hello king
函数名重名会产生覆盖,哪个靠下执行哪个。就近原则。
1 test(); 2 function test(){ 3 alert('hello nana'); 4 } //弹出hello nana
函数通过return返回值,如果不返回则是undefined。
1 function test2(){ 2 return null; 3 } 4 test2(); //没有弹出框,错的 没结果; 5 alert(test2()); 或者 document.write(test2()); //弹出 null
函数可以有参数也可以没有参数,可写一个也可写多个,写几个传几个 ,一 一对应
1 function calc(num1,num2){ //形参 2 return num1+num2; 3 } 4 alert(1,2); //弹出 3 5 alert(window.calc(3,5)); //window权重最高,弹出8 6 alert(calc(1,2,3,4,5)); //不管写几个,默认几个参数,结果执行几个
7 function calc(num1,num2){ 8 num1=num1 || 1; //有一个为真执行 9 num2=num2 || 2; 10 return num1+num2; 11 } 12 alert(calc()); //不传参,num1,num2为空, 转布尔类型为false 。 结果 3 13 alert(calc(3,6)); //弹出 9, 第一个为真,后面短路。
实现默认参数的形式
1 function colc(x,y){ 2 x=x||0; 3 y=y||0; 4 return x+y; 5 } 6 alert(colc()); //弹出 0 x,y空=false,不执行,所以都等于0例2:function calc(x,y){ 7 if(x===undefined){ 8 x=0; 9 } 10 y=y===undefined?0:y; 11 return x+y; 12 } 13 alert(calc()); //弹出0 14 alert(calc(1,3)); //弹出4
15 function calc(x,y){ 16 return auguments; //object Auguments 17 alert(arguents[0]); //undefidend 18 alert(arguments[1]); //undefidend 19 x=arguments[0]?arguments[0]:0; //第0个数组存在执行【0】,不存在弹 0 20 y=arguments[1]?arguments[1]:0; 21 return x+y; 22 } 23 alert(calc()); //弹出0 数组里面没东西,所以为0; 24 alert(1,2); //弹出3
可变参数形式的参数
1 function test(){ 2 var paramsNum=arguments.length; //得到传入参数的个数 3 var sum=0; 4 for(var i=0; i<paramsNum; ++i){ 5 sum+=arguments[ i ]; 6 //sum=sum+arguments[ i ]; 7 } 8 return sum; 9 } 10 // arguments[1,2,3,4,5,6,123,344,43,3]; 11 alert(test(1,2,3,4,5,6,123,344,43,3)); //弹出534 所有的和
12 function test(){ 13 var paramsNum=arguments.length; 14 var max=0; 15 for(var i=0; i<=paramsNum-1; i++){ 16 if(arguments[ i ]>max){ 17 max=arguments[ i ]; 18 } 19 } 20 return max; 21 } 22 alert(test1(123,3432,23456,445643)); //弹出 445643
变量的作用域 分为全局变量和局部变量。
1 var x=1; //全局变量 2 function test(){ 3 ①document.write('函数体内的值为:'+x+‘<br/>’); // 执行x=1 先读②,x被声明过,再返回读函数体外的全局变量 5 ②x=19; //全局变量 加上var成局部变量,①读取不到执行undefined 6 document.write('函数体内对x重新赋值,此时x的值为:'+x+'<br/>'); //执行x=19 7 } 8 document.write('函数体外x的值为:’+x+‘<br/>'); //执行全局x=1 9 test(); 10 document.write('x的值为:'+x+'<br/>'); //执行全局x=1
全局变量和局部变量的区别
1 function test(){ 2 var x=1; 3 alert(x); 4 } 5 test(); //弹出 1 6 alert(x); //没声明没值,弹出undefined 7 var x=1, y=2; 8 function calc(x,y){ 9 document.write('a的值为'+a+’<br/>‘); //无a 结果为undefined 10 document.write('函数体内x的值为:'+x+‘<br/>’); // 先读4,看下面有无声明,再读全局执行1 12 document.write('函数体内y的值为:'+y+‘<br/>’); // 同理楼上,执行2 13 ④var x=0,y=6; 14 z=x+y; 15 ⑥x=x+y; 16 var a=198; 17 document.write('a的值为:‘+a+’<br/>'); //读最近,执行198 18 document.write('a的值为:‘+x+’<br/>'); //执行⑥ 弹出6 19 return z; 20 } 21 alert(calc(x,y)); // 弹出6 22 alert(x+'-'+y+'-'+z); //弹出1-2-6 x,y读全局,z最后值是6