函数的声明方法

在JavaScript中函数一共有三种声明方法。

function()命令)(声明一个具名函数)

1
2
3
function 函数名(e){
console.log(e)
}

其中function命令声明的代码区块,就是一个函数。function后的就是函数名,如果一个函数没有函数名就是匿名函数。函数名之后就是一对括号,用来传递函数的参数.函数体放在大括号里面。这种声明方式,函数名必须要写,如果不写的话无法调用。



函数表达式(变量赋值)

1
2
3
4
5
function (){} // 直接声明匿名函数会报错

var Fn = function (e){ // 需要把匿名函数传给一个变量,下次引用才能用得到,JS不允许有无意义的声明
console.log(e)
}

:该表达式右侧function不带有函数名。如果加上函数名,该函数名只在函数体内部有效,在函数体外部有效。

1
2
3
4
5
6
7
8
var Fn = function i(){
console.log(typeof i);
};
// ReferenceError: x is not defined
//因为i也是一个变量,需要声明之后才能使用。

Fn()
// function

或者直接把函数名变为变量名

1
var i = function i (){} ;

需要注意的是,函数的表达式需要在语句的结尾加上分号,表示语句结束。


Function构造函数

1
2
3
4
Function('p1','p2','functionBody')
// p1,p2 是arguments functionBody 是函数体
var a
a = Function('x','y','return x+y')

这种写起来很麻烦 而且一般很少人用。


函数一般在函数体内不写return的话浏览器会自动补全,

1
2
3
4
5
function s(){}

function s(){
return undefined //浏览器会自动补上这一句话
}

所以一般typeof没有返回值的函数的值都是undefined。




另外补充两种方法

匿名函数的声明

1
2
var x
x = function(){}

箭头函数的声明

1
2
3
4
5
6
7
8
9
10
var a
a = (x+y) => {return x+y}
//可以简写成
a = (x+y) => x+y

当只有一个参数时
var b
b = (x) => {return x*x}
//可以简写成
b = x => x*x

箭头函数都是匿名的

函数表达式和function()命令有一些区别需要提一下

1
2
3
4
5
6
function y(){}
console.log(y) // function y(){}
var a = function x(){}
console.log(x) // x is not defined

//JS的不一致性

__END__

o0Chivas0o
文章作者:o0Chivas0o
文章出处函数的声明方法
作者签名:Rich ? DoSomethingLike() : DoSomethingNeed()
版权声明:文章除特别声明外,均采用 BY-NC-SA 许可协议,转载请注明出处