基础函数
函数的声明和调用
function是执行特定任务的代码块 优势:精简代码方便使用
语法:
function 函数名(){
函数体
}
函数名() 函数调用 必须调用才能执行 可以多次调用
函数名:使用小驼峰命名法
函数的参数
形参:理解为 在这个函数内声明的变量
实参:理解为 给这个变量赋值
函数的返回值
return:将函数的结果 返回给函数调用
函数 没有return 函数调用默认underfined
retuen 后面没有值(没有返回结果) 返回也是undefined
函数里面return后面的代码不执行,
内置函数:js封装好的函数,我们直接调用就可以
高阶函数:函数的高级应用 js中函数可以当做值使用,实现函数的高级应用
函数分为具名函数和匿名函数
回调函数 : 当一个函数作为参数传递给另一个函数的时候 这个函数就是回调函数
匿名函数: 把一个函数赋给一个变量 也叫函数表达式和普通函数没有区别也可以传参
函数表达式必须先声明后调用
自执行函数(立即执行函数)属于高阶函数 前面可以加; ! + 前面如果有代码会出现错误
第一种写法:
;(function (){
console.log('函数执行了');
})()
第二种写法:
;(function(){
}())
函数的封装
命名空间 就是一个普通的对象 用作该对象的属性和方法
解决变量污染的问题
递归函数: 是函数的高级用法,本质上是函数自己调用自己,非常类似循环
函数内部调用自己本身,并且通过条件控制避免陷入死循环,就叫做递归函数
递归函数三个特性
1.重复执行 2. 调用自身 3.必须要有条件控制 避免死循环
延时函数:是实现程序暂缓执行的技术 延时函数和间歇函数统称为定时器或定时任务 结合递归函数可以实现定时器的任务
语法:
setTimeout(函数,毫秒数)
结束 语法:clearTimeout(变量名)
闭包函数:闭包就是一个函数,可以访问其他函数内部变量的这么一个函数(闭包函数)
作用:就是延长了变量的使用周期,避免变量污染
变量的声明周期是什么时候开始?什么时候结束
在函数中的变量,只要函数调用后,变量就会自动消失
闭包的实现没有严格的语法
特征:在一个函数中能否继续使用另外一个函数中的变量,就是一个闭包函数
1.函数提升:
只要是函数就会有函数提升 在我们程序中当代码遇到函数的时候,先将函数的声明提升到当前作用域的开始,不包括函数的调用
这个代码就可以体现函数的提升
fn();
function fn(){
console.log(123);
}
2.函数中参数默认值设置
2.1变量如果没有赋值,结果就是undefined
可以给参数设置默认值
注意
如果没有实参,则形参的值就是设置的默认值结果
如果设置了实参,则形参的值就是实参里赋值的结果
3.函数中的动态参数 arguments(固定写法,不能自定义)
3.1 arguments是函数中一个默认的伪数组对象
3.2 arguments记录用户传递的实参信息
4.函数中的剩余参数的用法(是es6中的新语法)
4.1 语法规则 : ...自定义名称(数组方式呈现)
4.2 如果实参的个数少于形参的个数则多余的形参为undefined
4.3如果实参格的个数和形参的个数相同,则形参的值就是实参的对应的结果
4.4如果实参的格式多余形参的个数,那么多余的实参可以通过剩余参数获取
4.5剩余参数最后会以数组的形式将多余的实参保存下来
4.6剩余参数必须写到参数的末尾
5.箭头函数语法及注意事项
箭头函数就是函数的语法糖
语法:
let fn = () => {
console.log(123);
}
fn()
本质就是匿名函数
箭头函数的注意事项:
1.由于箭头函数本质就是一个匿名函数,所以一般会给箭头函数设置一个函数名
2.箭头函数也可以按照自调用函数的写法调用
(() => {console.log(123);})()
3.箭头函数中的()就是用来设置函数的形参 箭头函数中的{}就是函数体
4.箭头函数中也可以设置返回值
5.如果箭头函数中,如果函数有且只有一个形参,则()可以省略不写
6.在箭头函数中,当函数中只有一行代码的时候,则{}可以省略不写,return不写,返回值
7.箭头函数中的this指向 window 在箭头函数中不支持this this都指向window