什么是函数?

将实现某一个功能的代码片段放到一个 function 中就是一个函数,函数具备作用域

问题- 声明变量和声明函数的提升有什么区别?

(1) 变量声明提升:变量声明在进入执行上下文就完成了。
只要变量在代码中进行了声明,无论它在哪个位置上进行声明, js 引擎都会将它的声明放在范围作用域的顶部;

(2) 函数声明提升:执行代码之前会先读取函数声明,意味着可以把函数申明放在调用它的语句后面。
只要函数在代码中进行了声明,无论它在哪个位置上进行声明, js 引擎都会将它的声明放在范围作用域的顶部;

(3) 变量 or 函数声明:函数声明会覆盖变量声明,但不会覆盖变量赋值。
同一个名称标识 a,即有变量声明 var a,又有函数声明 function a() {},不管二者声明的顺序,函数声明会覆盖变量声明,也就是说,此时 a 的值是声明的函数 function a() {}。注意:如果在变量声明的同时初始化 a,或是之后对 a 进行赋值,此时 a 的值变量的值。eg: var a; var c = 1; a = 1; function a() { return true; } console.log(a);