{}:
1、分支循环、代码块
2、对象
3、函数的:方法体、函数体
函数:封装特定功能的代码块
1、函数创建后需要使用才执行函数体
2、函数也是对象
创建函数:
1、var 函数名 = function(){函数体} //(匿名函数)
2、function 函数名(){函数体} //定义的函数会预处理
3、var 函数名 = ()=>{函数体} //lambda表达式(箭头函数)
4、var 函数名 = new Function (`方法体`) //基本不用
调用函数:
函数名(参数) //参数可写可不写
代码调试:
F10直接跳过函数执行步骤,F11单步调试函数
嵌套函数:
在函数体中直接定义函数;可以嵌套多个函数
函数的作用域(变量能用的范围):
全局:
定义在外边(var/let/const)、分支循环代码块(var),在函数中可以用
局部:
在函数中定义的变量,只能在函数中使用
函数中变量的使用:
能在函数体中找得到,不会在外边找
函数中取变量,就近原则
全局作用域:
1、不能用name定义全局变量,因为是关键字
2、定义在外边(var/let/const)、分支循环代码块(var)
块级作用域:
let/const 定义在代码块中
参数:一个函数中动态的数据,可以作为参数传入
形参(接收的数据)
实参(传递的数据)
参数的特性:
1、局部作用域
2、传递和接受一一对应
3、 没有传递数据时,形参默认值是undefined
4、可以修改默认值,在形参后直接赋值
返回值:执行函数之后拿到的数据
return 数据;
1、一个函数只能执行一个return
2、return会终止整个函数
3、要返回多个数据,封装到对象中返回
4、把数据封装到对象时,如果键值对的名一样,可以直接写key
5、返回值是对象可以直接进行解构