函数声明与表达式

将脚本编写为函数可避免页面载入时直接执行该脚本

函数中有代码,这些代码只能被事件激活或在函数运行时才会执行

变量声明

函数中声明的变量,叫做局部变量,该变量只能在函数中访问,退出函数后该变量就会被撤销;这意味着我们可以在不同的函数中声明名称相同的变量

局部变量声明只有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语言中的命名处理规则决定了函数名在函数内部总是可见

函数是JavaScript语言中的一等对象,可以像其它值一样被传递,如把匿名函数作为回调函数传递到异步函数中
原文地址:https://www.cnblogs.com/johnl/p/4849678.html