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));

posted @ 2021-08-13 20:13  拾呓  阅读(59)  评论(0)    收藏  举报