创建函数
function fun1(parameter1, parameter2) {}let fun2 = function (parameter1, parameter2) {}
调用函数
function fun1(parameter1, parameter2) {}let fun2 = function (parameter1, parameter2) {}fun1(actual arguments1, actual arguments2);fun2(actual arguments1, actual arguments2);
函数参数
function fun(num1, num2) {console.log(num1 + num2);}fun(1, 2); // 3fun(1); // NaN:num2 = undefinedfun(1, 2, 3); // 3
函数返回值
function sum(num1, num2) {return num1 + num2;}console.log(sum(1, 2)); // 3
return会终止函数return后面的代码不会执行return只能返回一个值,多个值以最后一个为准- 函数默认返回
undefined
arguments
arguments对象存储了传递的所有实参(伪数组)
function fun() {console.log(arguments);}fun(1, 2, 3);// [Arguments] { '0': 1, '1': 2, '2': 3 }
立即执行函数
;(function () { // 匿名函数console.log('立即执行函数') // 立即执行函数})();(function (name) {console.log(name) // yingximu})('yingximu')
回调函数
/** 将函数作为参数调用的函数称为回调函数** 调用fun函数,传递一个匿名函数作为参数* fun接收这个匿名函数并且调用* callbackFn = function () {* console.log('callbackFn')* }*/function fun(callbackFn) {callbackFn()}fun(function () {console.log('回调函数')})
箭头函数(ES6)
/** const fun1 = function () {* console.log('fun1')* }*/const fun1 = () => {console.log('fun1');}/** const fun2 = function (num) {* console.log(num)* return num* }** const fun2 = (num) => {* console.log(num)* return num* }*/const fun2 = num => {console.log(num)return num}/** const fun3 = (num) => {* return num + 1* }*/const fun3 = num => num + 1/** const add = function (num1, num2) {* return num1 + num2* }*/const add = (num1, num2) => num1 + num2
参数默认值
function sum(num1 = 0, num2 = 0) {return num1 + num2}console.log(sum()) // 0console.log(sum(1)) // 1console.log(sum(1, 2)) // 3function connect({ host = '127.0.0.1', username, password, port }) {console.log(host, username, password, port)}connect({ username: 'root', password: 'root', port: '3306' }) // 127.0.0.1 root root 3306connect({ host: 'localhost', username: 'root', password: 'root', port: '3306' }) // localhost root root 3306
rest
该方式的参数放在最后,以数组方式存储传递过来的实参
function sum(...args) {console.log(args)}sum(1, 2, 3, 4, 5, 6) // [ 1, 2, 3, 4, 5, 6 ]
