函数
一个函数是可以通过外部代码调用的一个“子程序”(或在递归的情况下由内部函数调用)。一个函数由称为函数体的一系列语句组成。值可以传递给一个函数,函数将返回一个值。
函数是头等对象,也可以像对象一样具有属性和方法,与对象的区别在于函数可以被调用。
函数定义
函数声明
语法:
function name(params) {statements}
// function name (params) {statements}
f1(1)
function f1(params) {
console.log(params)
}
f1(2)
// 1
// 2
函数声明会使函数提升,可以在函数声明前调用该函数。
函数表达式
语法:
var fun = function name(params) {statements}
也可以是一个匿名函数。
f2(1) // f2 is not a function
var f2 = function(params) {
console.log(params)
}
f2(2) // 2
函数表达式没有提升, 只能在定义后调用。
函数生成器表达式
语法:
function name(params) {statements}
function关键字后跟一个星号会定义一个生成器函数。它返回一个 Generator 对象。
function* f3(i) {
yield i;
yield i + 10;
}
const f = f3(10);
console.log(f.next().value) // 10
console.log(f.next().value) // 20
生成器函数在执行时能暂停,后面又能从暂停处继续执行。 不能当构造函数使用。
箭头函数表达式
语法:
(params) => {statements}
var f4 = (params) => {
console.log(params)
console.log(this)
}
f4(1)
特点:
- 没有单独的
this - 不绑定
arguments - 箭头函数不能用作构造器,不能使用
new。 - 箭头函数没有
prototype属性。 - 箭头函数不能用作函数生成器
Function`构造函数
语法:new Function (arg1, arg2, ... argN, functionBody)