Functions 函数 - JavaScript

定义

函数定义

1
2
3
4
5
6
7
8
// 定义
function name(参数) {
// 内容
return
}

// 调用
name(参数)

return 只能返回一个值,多个值逗号并列,只返回最后一个

函数表达式

1
2
3
let f = function() {
// statements
}

匿名函数

1
2
3
function() {
// statements
}

箭头函数

1
2
3
4
5
6
7
8
9
10
(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression // 相当于:
//(param1, param2, …, paramN) =>{ return expression; }

// 当只有一个参数时,圆括号是可选的:
(singleParam) => { statements }
singleParam => { statements }

// 没有参数的函数应该写成一对圆括号。
() => { statements }

箭头函数 与普通函数的区别

  • this 箭头函数定义时确定,普通函数调用时确定
    2.箭头函数继承而来的this指向永远不变(重要)
    3.call()、apply()、bind()无法改变箭头函数中this的指向
    4.箭头函数不绑定arguments,取而代之用rest参数…解决
    5.不能使用new操作符(作为构造函数使用)
    6.不能使用原型属性
    7.不能简单返回对象字面量
    8.箭头函数不能换行

简写:

1
2
3
4
5
6
7
8
9
// 原:
name: function() {

}

// ES6:
name(): {

}

函数和对象

JavaScript 中函数也是对象,对象则有方法,apply和call就是函数对象的方法

参数

未传入实参

1
2
3
4
5
6
7
let f = (a1, a2) => {
console.log(a2);
}

f('arg1')

// output: undefined

未传入实参,变量值为 undefined

参数默认值

1
2
3
4
5
6
function log(x, y='world'){
// y 设置了默认值
console.log(x, y);
}

log('hello'); //hello world

立即执行函数

1
2
3
(function() {

})()

多个立即执行函数之间必须加 ;

1
2
3
4
5
6
7
8
9
10
11
(function() {

})();

(function() {

})()

;(function() {

})()