由浅入深JavaScript5基础-数组和函数2

xiaoxiao2021-02-27  202

JavaScript函数 什么是函数:     函数是一组封装了特定功能的代码块,可以随时随地的运行的语句。     函数由关键字function,函数名,参数,函数体和返回值构成。 函数的声明:     函数声明使用关键字function + 函数名称。     以下是一个函数的完整样例     eg: function  showName(name){             var result = name +"hello";             return result;         }     关键字function ,函数名showName,参数name,     执行体 var result = name +"hello";     返回值:return result;      函数的调用:     函数的使用直接函数名加括号来调用函数。有参数传入参数。     eg: showName('JavaScript');     我们执行     alert(showName('JavaScript'));输出JavaScript hello      函数的返回值:     函数的返回值是可有可无的,也就是说可以有return也可以无return.     但是没有return语句的函数,ECMASCript会自动返回undefined。     eg: function  showName(name){             var result = name +"hello";         }         alert(showName('JavaScript'));//undefined 函数的arguments对象     arguments是函数的特殊对象。它代表参数对象。使得编码无需指出参数名     就可以访问参数。     eg:     <html>         <head>             <meta charset="UTF-8">             <title></title>             <script>                 window.οnlοad= function(){                     var oText1 = document.getElementById('text1');                     var oText2 = document.getElementById('text2');                     var oBtn1 = document.getElementById('btn1');                     oBtn1.onclick = add(1,2); //调用函数add传递参数1,2                 }                 function add(a,b){                     alert(a);//接受参数1                     alert(b);//接受参数2                     alert(arguments.length);//不使用参数名a,b,使用arguments对象                     alert(arguments[0]);//等价于a,1                     alert(arguments[1]);//等价于b,2                 }             </script>         </head>         <body>             <input type="text" name="text1" id="text1" value=""/>             <input type="text" name="text2" id="text2" />             <input type="button" id="btn1" value="相加" />         </body>     </html>          如此看来arguments对象和参数名功能一致,那arguments不是多此一举吗?     事实上,arguments对象的作用在于不定参。有些函数参数传递个数不固定,     这是就无法使用参数名,a,b这样的形式。     示例如下,多个数相加,但是具体几个数字不固定,此时用arguments最好。     eg:         <script>             function result(){                 var result = 0;                 for(var i = 0 ;i<arguments.length;i++){                     result+=arguments[i];                 }                 alert(result);             }             result(1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9);         </script>         调用参数时即使传递参数个数不固定,函数result也能很好地执行。         如果采用固定参数名 function result(num1,num2,num3……),         是无法办到的。 函数分为内建函数和自定义函数     上文中所写的函数都为我们自己写的函数称为自定义函数,在js里还有大量的     内建函数,即js定义的函数,如,String对象的 toString(),subString()     array.sort()等等,我们已经见过很多      全局函数和局部函数     全局函数定义在<script>标定里,在签里都可以使用。     局部函数定义在函数内部,只能在其外部函数里使用。     eg:         <script>             function show(name){                 function say(){                     alert('say hello');                 }                 say();                 alert(name);             }             show('js');         </script>     对于函数show就是全局函数,对于函数say就是局部函数 匿名函数:所谓的匿名函数就是没有名字的函数,除此以外和普通的函数一样。     eg:         <script>             window.onload = function(){//匿名函数                 function aaa(){//局部普通函数                     alert('aaa');                 }                 var btn = document.getElementById('btn1');                 btn.onclick = function(){//局部匿名函数                     alert('btn click');                 }                 aaa();//局部函数只能在其嵌套的函数里用                 bbb();//全局函数在哪里访问都可以             }             function bbb(){//全局普通函数                 alert('bbb');             }             var test = function(){//全局匿名函数                 alert('test');             }             test();//全局函数在哪里访问都可以         </script> 函数闭包     闭包,指的是词法表示包括不被计算的变量的函数,     也就是说,函数可以使用函数之外定义的变量。          简单闭包     再函数里使用全局变量             <script>             var a = 'hello';             function aaa(){                 var result = a;                 alert(result);             }             aaa();         </script> 复杂闭包:     在函数里使用另一个函数,内部函数是一个闭包。     内部函数没有用参数接受变量,直接使用父函数的变量。                           <script>             var num = 2;             function bbb(){                 var bnum = 1;                 function ccc(){                     alert(bnum+num);//3                 }                 return ccc();             }             bbb();         </script>

总结:闭包就是函数里能用函数外的值

——总结—— 限于文章篇幅原因,这里仅仅介绍冰山一角。由于笔者的水平有限,编写时间也很仓促, 文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正

转载请注明原文地址: https://www.6miu.com/read-13493.html

最新回复(0)