js基础知识笔记二
函数基础知识
1,函数的基本格式
①函数声明:
function 方法名/函数的名字(){ //要执行的代码 }
②函数调用:
//函数声明 function fn(){ console.log(1); } //函数的调用 fn();
注意:在调用时,如果没有加‘()’,会返回函数的方法体。
③函数参数:
function func(形参1,形参2){ //函数执行代码 } func(实参1,实参2);//调用时传参
情况一:函数的实参和形参的数量应该相同,但是JS并没有这样的要求。可以不相同
情况二:如果函数的实参数量少于形参数量,那么多出来的形参会默认会undefined
情况三:如果函数实参数量多余形参数量,那么多出来的实参就不能通过形参访问。函数忽略掉多余的实参。
④函数返回值:
四种情况:
情况一:如果函数中没有return关键字,那么函数有默认的返回值undefined (如下)
<script> function fn(){ } console.log(fn()); </script>
情况二:如果函数中有return关键字,那么这个关键字后面的代码是不会执行的 (如下)
<script> function fn(){ return '我被返回了'; alert('我是不会被执行的'); } console.log(fn()); </script>
情况三:如果函数中有retruen关键字,这个关键字后面没有值,那么这个函数有返回值是undefined (如下)
<script> function fn(){ return ; } console.log(fn()); </script>
情况四:如果函数中有return关键字,这个关键字后面有值,那么这个值就是这个函数的返回值。 (如下)
<script> function fn(){ return '前端yyds'; } console.log(fn()); </script>
2,函数类型
①匿名函数(也可以叫做没有名字的函数)》实际开发中用的相对较多
var a = function(){ console.log('前端开发'); } a();
②具名函数
function fn(){ console.log("一个喜欢画画的前端小猿人"); }
③立即执行函数(又叫做IIFE)》相比来说开发用的多,用于多个函数的封装
(function (用于接收实参){ console.log("我是IIFE函数"); })(也可以传实参)
关于立即执行函数的解释
IIFE作用
1,防止外部命名空间污染
2,隐藏内部代码暴露接口
3,对项目的初始化,只执行一次
IIFE特点
1,匿名函数自调用是在定义的同时执行函数
2,匿名函数自调用只能执行一次
如果需要一个函数可以执行多次,这个函数必须是有名函数
如果函数没有名字要想执行必须是自调用,但是只能执行一次
3、匿名函数自调用,函数整体不会发生预解析,但是函数内部执行代码是要去预解析
3,函数的递归
函数的递归调用,就是函数在内部自己调自己
函数的递归调用是一把双刃剑,如果设计的好,可以帮我们简单的处理事情,如果设计不好就是灾难
函数的递归要想设计好必须有两个条件
- 必须有一个明显的结束条件,不能一直递归下去
- 每一次调用都要有一个趋近结束条件的趋势
情况一(设计不好的递归):
<script> function fn() { console.log('设计不好的递归'); fn(); } fn(); </script>
情况二( 防止递归名字被修改):
<script> var n = 0; function fn() { if (n >= 10) { return; } n++; console.log('递归部分'); //fn =1; //fn(); arguments.callee(); } fn(); </script>
递归的小案例:
实现10的阶乘
function result(n){ if(n <= 1){ return 1; } return n * getFactorial(n - 1); } console.log(result(10));

浙公网安备 33010602011771号