轮播图函数没搞明白,复习一下做个笔记
补充知识点——函数加括号和不加括号
目录
一、函数的概念
函数就是一个对象,是我们构造出来的一个模块,目的就是在解决问题后可以更加方便快速的维护,也可以理解成一个子程序。
二、函数定义的三种方式:
1.函数声明
2.函数表达式
3.箭头函数
三、函数的参数
形参就是在创建函数的时候以变量的形式创建的参数
function sum(a, b){
console.log(a+b)
}
实参就是在执行函数的时候传递的参数
sum(2,4)
特殊情况:
形参的数量大于实参的数量,多余的形参会默认赋值为undefined,如果形参有默认值,则会赋值为自己传递的默认值
形参的数量小于实参的数量,多余的实参不会使用
参数的类型
js不会检查传递参数的类型,所以可以传递任何类型作为参数,当我们实际开发过程中,这不是一件好事,我们需要对获取到的数据进行类型转换
四、对象作为参数
function fn1(obj){
console.log(obj)
}
let a = {name:"leixu"}
fn1(a)
传递实参时,传递的不是变量本身,而是变量中存储的值
function fn1(obj){
console.log(obj)
}
let a
fn1(a)
结果会是undefined
function fn2(a={name:"孙悟空"}){
console.log(a.name)
a.name = "猪八戒"
console.log(a.name)
}
fn2() //孙悟空 猪八戒
fn2() //孙悟空 猪八戒 or 猪八戒 猪八戒
函数每次调用,都会重新创建默认值,所以结果是 孙悟空 猪八戒
function fn2(a){
console.log(a.name)
a.name = "猪八戒"
console.log(a.name)
}
let b = {name:"孙悟空"}
fn2(b)
fn2(b)
这时得到的结果就是 猪八戒 猪八戒
如果参数作为默认值传递进来,每次调用就会创建一个新的,但如果作为变量存储,每次调用都会访问存储的内存地址
五、函数作为参数
函数也是一个对象,所以它可以作为参数进行传递,好处就是传递的参数就是一个函数,是一个动态的参数,需要什么功能可以直接修改
目前这个阶段先有这个概念,后面遇到在添加
六、函数的返回值
现在有一个函数sum如下
function sum(a,b){
console.log(a + b)
}
sum(1,2)
这是函数是没有返回值的,每次调用都会自动执行函数里面的代码,如果说现在有一个需求是这个值计算出来要和别的值进行计算,我们就需要用到返回值
function sum(a,b){
return a + b
}
sum(1,2)
这是打印台不会显示,但函数确实执行了a+b,如果我们需要用到这个值,
let result = sum(1,2)
console.log(result)
这是我们想什么时候用就什么时候用
返回值就是函数的执行结果,函数调用完毕返回值会作为结果返回
任何值都可以作为返回值使用,如果return后不跟任何值,则相当于返回undefined
如果不写return,函数的返回值依然是undefined
return一执行,会立马终止函数的执行
七、箭头函数的返回值
写法和普通函数一样
也可以简写——箭头函数的返回值可以直接写在箭头后(只有一条语句时)
如果直接在箭头后设置对象字面量为返回值时,对象字面量必须使用()括起来
还差this和作用域,遇到在复习
八、函数加括号与不加括号的区别
包装函数的声明以(function...而不是function...开始时,函数会被当做函数表达式而不是一个标准的函数声明来处理
(function foo(){...}) 作为函数表达式意味着foo只能在 ... 所代表的位置中被访问,外部作用域呢不行。