Js函数

Js函数

1.函数的概念:
JS中的函数:把一段需要重复使用的代码,用function语法包起来,方便重复调用,分块和简化代码。复杂一点的,也会加入封装、抽象、分类等思想。
2.函数的声明:
(1).函数表达式:
A.概念:函数只能在声明之后调用。因为这种方式声明的函数,是在函数运行的阶段才赋值给变量 f 的;
B.函数代码:
在这里插入图片描述
赋值式函数声明可以没有函数名。
函数定义和调用规范:先声明再调用。
(2).声明式:
A.函数声明的关键字 : function;
B.function 关键字 和 var 关键字的行为几乎一致,都会在内存上开辟一块空间,用来存储变量之中的数据;
核心代码:
function 函数名( 条件 ){
//代码
}
注:函数的命名规则和变量命名规则完全一致;
函数推荐驼峰命名; 变量推荐_命名;
函数代码:
在这里插入图片描述
函数定义了,会把代码默默的放在那里,不会去执行代码;只要在程序主动调用的时候,代码才会执行;
注:值得注意的是,当同时使用这两种方式声明同一个函数名,最终执行的是函数表达式声明的函数。
承接上图—函数代码:
在这里插入图片描述
最终输出结果:
在这里插入图片描述
(3).通过构造函数方法:
构造方法:var 变量名 = new Function(‘形参1’,‘形参2’…,‘函数体’);
函数代码:
在这里插入图片描述
效果图:
在这里插入图片描述
3.函数的调用:
函数调用的两种形式;
(1).在代码之中调用;
函数名+(); 调用运算符; 函数可以多次调用;
在这里插入图片描述
(2)浏览器在特定时机帮你调用函数----------事件;
html标签进行触发 => 浏览器接受 => 浏览器调用函数;
在事件中调用,直接写函数名,不使用括号
代码如下:
在这里插入图片描述
console.log(btn);
在点击的时候会让浏览器调用对应的函数;
btn 就是元素的id;
onclick 是事件行为;
btn.odblnclick = foo;
效果图:
在这里插入图片描述
4.函数的传参:
A.获取元素,最好从父级元素获取
B.函数的参数主要分这两种:
形参:形式上的参数——给函数声明一个参数;
实参:实际上的参数——在函数调用时给形参赋的值;
在这里插入图片描述
C.传递的参数的数量:
函数的参数可以有无限多个,那么就有两个不同的问题来了:
(1).形参多了:怎么办?
在这里插入图片描述
实参数量比形参数量少; 其余未赋值的形参值都为undefined;
(2).实参多了:怎么办?
因为实参多余形参,所以结果是依据形参的数量对应的实参进行赋值;
代码:
在这里插入图片描述
结果图:
在这里插入图片描述
那么怎么解决这个问题呢?
函数之中有一个关键字 : arguments => 接受所有的实际参数;剩下的参数都使用arguments关键字进行接收, 使用 [] 进行取出;arguments 里面可以存很多很多的数据;
JS之中的取出运算符 => .纯英文
=> [] 里面可以放任何数据;
即:document.write() === document"write"
代码如下:
在这里插入图片描述
结果图:
在这里插入图片描述
5.函数的返回值:
A.概念:即函数执行之后的返回结果。
B.注意事项:
(1)所有函数都会有函数返回值即函数执行后一定会返回一个结果,如果没有定义默认返回undefined;
(2)在函数中,return后定义返回值;
(3)在函数中,return之后的代码就不会再执行了
(4)return只能用于函数中,用在其他地方会报错
在这里插入图片描述
结果:发现return后的代码没有继续执行
在这里插入图片描述
6.函数的递归:
A.概念:函数反复调用自己,直到最终结果,跳出
在这里插入图片描述
B.书写方法:
Function 函数名( 条件 ){
终止条件:
XXXXXXXXXXXX
运算规则:
XXXXXXXXXXXX
}
C.那怎样的函数是递归呢?
举例递归:
斐波那契:数列:
1 1 2 3 5 8 13…
输入斐波那契的数列项数,计算当前项的具体数值;
在这里插入图片描述
D.总结:
(1).递归的必备条件:
a.终止条件包裹在if之中的return
b.运算条件极简算法
c.返回结果
(2).递归类似于自己调用自己
(3).递归类似于循环
(4).递归函数要注意停止返回,否则会造成死递归
(5).递归比较消耗性能,尽量少用

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值