简介
介绍:函数就是执行特定任务的代码块
优点:精简代码方便复用,提高开发效率
函数的分类:匿名函数,具名函数,构造函数,随机函数
封装函数
声明语法:function 函数名(){ 函数体 }
调用语法:函数名()
函数调用特点:随时调用,随时执行,可重复调用
function fn() {
console.log(1)
}
fn() 调用函数
注意:==函数不调用,自己不执行==
匿名函数
介绍:没有名字的函数,无法直接使用
语法:function() { }
使用匿名函数的方法:
函数表达式
介绍:通过匿名函数赋值给变量的方式使用,称为函数表达式
let getSum = function() {
函数体
}
getSum()
使用new创建函数
语法:const 函数名 = new Function('参数1','参数2','函数体')
const fn = new Function('num1', 'num2', 'alert(num1+num2)') // 函数体 在传递参数时 必须是字符串!!!
fn(1, 2)
立即执行函数
**介绍:**函数不需要调用,立即执行,其实本质上已经调用了
**作用:**防止变量污染
语法:
(function(){ xxx })(); //最后一个小括号的作用其实是在调用前面的匿名函数,最后一个小括号里的参数是实参
(function(){xxxx}());
注意:多个立即执行函数使用时 ==必须用分号隔开==
方法一:
方法二:
方法三:
前面加上运算符+ - * / ! ~都可以
+function() { }()
回调函数
介绍:当一个函数当做参数来传递给另外一个函数的时候,这个函数就是回调函数
本质:回调函数本质还是函数,只不过把它当成参数使用
回调函数有哪些:事件监听里的函数,forEach里的,map里的都称为回调函数
使用场景:使用匿名函数做为回调函数比较常见
btn.addEventListener('click', function () {}) 这里的匿名函数 相当于 事件监听的形参
函数名命名规范:
- 和变量命名基本一致
- 尽量小驼峰式命名法
- 前缀应该为动词
| 动词 | 含义 |
|---|---|
| can | 判断是否可执行某个动作 |
| has | 判断是否含义某个值 |
| is | 判断是否为某个值 |
| get | 获取某个值 |
| set | 设置某个值 |
| load | 加载某些数据 |
函数的参数
形参:声明函数时写在函数名右边小括号里的叫形参(形式上的参数)可以理解为变量
实参:调用函数时写在函数名右边小括号里的叫实参(实际上的参数)可以理解为给变量赋值
作用:可以极大提高函数的灵活性
参数的传递:是把实参传递给形参
function getNum(形参1,形参2) {
console.log(形参1 + 形参2)
}
getNum(实参1,实参2)
注意:
-
尽量保持实参和形参个数一致
-
参数之间用逗号分隔
形参默认值
作用:提高用户体验,防止在没有实参传递的时候出现bug
function getSum(x = 0, y = 0) {
document.write(x + y)
}
getSum() 输出为0
getSum(1,2) 输出为3
这个默认值只会在缺少实参参数传递时 才会被执行,所以有参数会优先执行传递过来的实参, 否则默认undefined
函数返回值
介绍:把函数处理结果返回给调用者
语法:return 数据
function fn(num1,num2) {
return num1 + num2
}
let fun = fn(10,20)
console.log(fun) // 30
注意:
- return 后面的数据不要换行写
- ==不要在return下面写任何代码==,因为
return会立刻结束函数运行 - 两个相同的函数后面的会覆盖前面的函数
- 没有
return的函数,默认返回值为undefined - 在对象外的叫 函数 ,在对象里面的叫 方法
return和break的区别:
return是退出函数
break是退出循环