函数声明与表达式
将脚本编写为函数可避免页面载入时直接执行该脚本
函数中有代码,这些代码只能被事件激活或在函数运行时才会执行
变量声明
函数中声明的变量,叫做局部变量,该变量只能在函数中访问,退出函数后该变量就会被撤销;这意味着我们可以在不同的函数中声明名称相同的变量
局部变量声明只有2种方式:var表达式、传参。代码如下所示
var fun = function (a) { var b = 1; };
函数中的a、b都是局部变量
函数声明
这种方法会在执行前被解析,它可以存在于该函数运行代码的前后任意位置。代码如下所示
function fun () { ... }; fun();
或
fun(); function fun () { ... };
运行结果都为正常
函数赋值表达式
这种方法是把匿名函数赋值给变量,因为赋值语句只在运行时执行,完成对该变量的解析,所以它必须存在于该函数运行代码之前。先看如下代码所示
var fun = function () { ... }; fun();
运行结果为正常;在赋值语句之前,该变量的值都缺省为undefined。代码如下所示
fun(); var fun = function () { ... };
运行结果为TypeError: fun is not a function
命名函数赋值表达式
一个特殊情况是将命名函数赋值给一个变量
var fun = function set () { set(); }; set();
运行结果为前者正常,后者失败;命名函数被赋值给了一个变量,于是该函数声明外不可见,在该函数内部却依然可见
JavaScript语言中的命名处理规则决定了函数名在函数内部总是可见