3函数
3-1函数是什么?
- 函数是一种特殊的数据类型
- 函数是执行特定任务的语句的集合
3-2创建函数的方法
不论使用那种方法创建函数,都必须使用function
关键词
函数声明
语法
function fnNmae(参数1,参数2,...参数n){
//语句的集合
return this
}
整个函数声明的过程由一下几个部分构成
function : 是一个声明函数的关键词
fnName:函数名称。声明函数会创建一个变量。函数名称就是一个变量的名称,这个是理解函数的关键。函数名称用来存放代码块(相当于变量的值)
-
小括号:用于储存函数参数。所有的参数都是为了计算函数的返回值而生。参数分为两类
- 形参:形参就是形式上的参数。形参是函数体内创建的变量形参用于接收传入到函数体内的实参。形参的数量可以是任意个,多个形参之间用逗号分隔,形参出现在函数申明中,实参出现在调用函数中
大括号:用于定义函数体。函数体包裹的是多条要执行的语句,函数体相当于变量的值
return语句:如果你希望函数执行后计算一个值,那么你就需要在函数体内使用return语句显式设置返回值。如果你没有设置return ,那么函数会隐式的返回值是undefined。记住!所有的函数只能由一个返回值,如果你要返回多个值,怎么办?记住:使用数组。把多个值储存到数组里,返回数组
this关键词:this是一个指示代词,this永远指向调用函数的对象,函数时谁调用的,this就指向谁。
调用函数
当创建了一个函数之后,如果你需要使用这个函数,那么你必须要去调用他。函数如果不调用,函数永远不会自己执行。调用函数的方法很简单,只需要在函数名之后加一对小括号就可以了。在调用函数时,小括号内用于传递实参
1. 直接调用
语法
fnName(实参1,实参2,实参N)
实例
function square(n){
return n*n
}
square(10) //100
思考:在函数调用的时候,形参和实参数量必须一致吗?
答案是否定的,函数提供了一个用于接收实参的对象:arguments。作为初学者,建议让形参和实参保持数量一致
2. 事件调用
btn.onclick = function(){
}
3. 方法调用
Array.isArray() // 方法调用
window.alert() //方法调用
4. 作为函数的参数调用
array.forEach(function(){})
5. 自调用
(function(){
alert('hello world')
})()
6.使用call()调用
3-3变量作用域
定义:
- 变量作用域指变量发生作用(可以访问到)的区域。
- 发生作用的区域是指定义变量的区域,变量在那个区域定义,变量就在那个区域起作用,在这个区域之内,可以访问到变量,在这个区域之外,访问不到变量
作用域分类
- 全局作用域:局部作用域之外的区域就是全局作用域
- 局部作用域:Unfortunately,局部作用域有两种定义方式:
- 函数作用域:使用var关键词定义的变量就会创建函数作用域。
- 块级作用域:使用let或const关键词定义的变量就会创建块级作用域。