执行函数的行为通常是在 JavaScript 代码执行时,注册宿主环境的某些事件触发的,而执行的过程,就是执行函数体(函数的花括号中间的部分)
函数体实际上有四种
普通函数体
function foo(){
//Function body
}
异步函数体
async function foo(){
//Function body
}
生成器函数体
function *foo(){
//Function body
}
异步生成器函数体
async function *foo(){
//Function body
}
上面四种函数体的区别在于:能否使用 await 或者 yield 语句
JavaScript 语法的全局机制:预处理和指令序言
预处理
JavaScript 执行前,会对脚本、模块和函数体中的语句进行预处理。预处理过程将会提前处理 var、函数声明、class、const 和 let 这些语句,以确定其中变量的意义。
var 声明
var 声明永远作用于脚本、模块和函数体这个级别,在预处理阶段,不关心赋值的部分,只管在当前作用域声明这个变量。
var 的作用能够穿透一切语句结构,它只认脚本、模块和函数体三种语法结构。