今天分享一下自己对函数的认识
第一次看见函数的人都不会觉得函数很难,,因为他看起来很简单......对,很简单(个屁)
<script> function fn(){ console.log('hello world') }fn(); </script>
上面就是一个简单的函数了,运行后打开控制台就能看见‘hello world’ 了,别人都说,在JavaScript中,函数有‘一等公民’的身份,小白的我开始没觉着,后面才发现,越到后面,函数用起来实在是太多了,或许这就是为啥他是‘一等公民’了;
首先我们的了解函数是个啥:

2. 赋值式函数的创建:使用var 关键字创建
var fnA = function(){
console.log('你好,世界')
}
赋值式函数创建就相当于把一个函数赋值给变量fnA;
二、学会创建我们就要知道怎么用了---函数的调用
调用直接在需要使用的地方写上函数名即可,后面跟一个小括号,表示你调用了这个函数,至于小括号,写上你要传进去的参数;参数下面再叙
调用有需要注意的一点:就是赋值式函数和声名式函数的不同之处,赋值式函数要在函数定义后才能调用,而声明式函数则可以想在哪用就在那用,这里的区别之处是因为js的预解析,js代码在运行时经历两个步骤,先通读代码,把声明的变量和声明的函数先解析了,赋值操作等到执行时再付给变量;所以声名式函数才能随时调用,而赋值式函数不行;我感觉这就是函数是一等公民的原因了;
三、函数的参数
函数的参数分为实参和形参,形参就是小括号内的参数,用来接收实参的;而实参就是调用时传给函数的形参;形参也是函数内的变量;
四,作用域
作用域就是一个变量的使用范围,全局作用域就是整个页面,而局部作用域只有函数能生成,而局部作用域里的使用Var声明的变量只能在函数内部使用,函数里面的子函数也能用,子函数的子函数也能用,但是子函数的子函数里的变量,子函数不能用;这就是作用域
五。函数的嵌套与递归
函数可以互相嵌套,就是允许函数里面可以再写函数,函数也可以互相调用,特殊的自己调用自己叫做递归;
<script> //使用递归求一个数的阶乘 //n 的阶乘是这样的: n! = (n-1)*(n-2)...*2*1;使用递归表示方法为:n! = n * (n-1)! ; function fn(a){ //找临界值 if(a == 0 || a == 1){ return 1; } return a = a * fn(a - 1) } console.log(fn(5)); </script>
上面就是一个简单的利用递归求一个数的阶乘的递归函数;
六,函数的返回值 return
如果你想函数返回一个值,那么你就需要写这个关键字return了;当然不写也可以,只是这个函数不会返回任何东西,只是单纯的执行了里面的代码;
<script> //不写return和写return的区别 function fn1(a, b){ var c = a + b; return c; } function fn2(a, b){ var c = a + b; } console.log(fn1(3, 5)); // 返回值为 8 console.log(fn2(3, 5)); // 打印的是这个undefined;并没有值出来 </script>
哦了。
来源:https://www.cnblogs.com/huSheep/p/12547131.html