函数: 一个被设计为执行特定任务的代码块
语法
通过
function
关键词定义,后面跟着其函数名称,然后是一对圆括号,圆括号中可以定义一些函数的参数。没有名称的函数呢?
函数名称可以包含字母、数字、下划线、中划线和美元符号(命名规则与变量命名一致)。
// 声明一个函数 function fnName(param1, param2, ... ,paramN) { // do something // return what did }
通过上面的方式,就创建了一个名称为fnName
的函数,至于执行什么特定任务,就看函数体的内容了,比如需要一个把数字乘二的函数。
function doubleNum(num) { const result = num * 2; return result; }
调用
调用函数是通过()运算符来实现的
使用函数名可以获得函数的定义,而使用函数名 + () 则可以获得函数的执行结果
console.log(doubleNum); // log function doubleNum(num) { const result = num * 2; return result } console.log(doubleNum(2)); // log 4
除了我们手动通过()运算符调用函数,还可以靠浏览器来执行,那就是绑定DOM事件
函数的属性
属性名 属性值 属性规则 name 函数名称 形参 params 定义函数时,在函数名后()中书写的字符,也就是定义时的参数集合 实参 arguments 调用函数时,在()中书写的字符,也就是执行时的参数集合 length 0 或 若干 从形参里第一个参数为普通参数时开始计数,直到最后一个普通参数
length属性的规则有点绕,我们知道函数的参数有三种,第一种是常规参数 function fn(a, b) {}
,
第二种是默认参数 function fn(a = 1, b = 2) {}
,
第三种是剩余参数 function fn(a, b, ...rest) {}
。
而length的计算,正是从第一个参数为常规参数时开始,到最后一个常规参数,如果第一个参数不是常规参数,length就是0。
function fn1(a, b, c) {}; // 第一个就是常规参数,开始计数,第二个和第三个也是,所以fn1的length为3 function fn2(a = 1, b, c) {}; // 第一个是带默认值的参数,不计数,后面即使都是常规参数也不会计数了,所以fn2的length为0 function fn3(a, b, ...rest) {}; // 第一个和第二个都是常规参数,计数, 第三个是剩余参数,不计数,所以fn3的length为2
之所以介绍一下length主要是之前看到一个面试题 123['toString'].length + 123 的值是多少
,看了上面的介绍现在你会了吗?