基本语法
JavaScript函数是指一个特定代码块,可能包含多条语句,可以通过名字来供其它语句调用以执行函数包含的代码语句。
比如我们有一个特定的功能需要三条语句实现:
1 | statement1; |
但是每次想实现这个功能的时候就需要写这三句话,很麻烦,我们可以把这三条语句打包为一个函数
1 | function doSomething(){ |
这样每次想实现功能的时候我们就调用一下函数就可以了,调用函数通过函数名称()
的形式调用
1 | doSomething(); |
例如:
1 | function name(){ |
函数定义
函数声明(函数语句)
1 | //使用function关键字可以声明一个函数 |
函数表达式(function expression)
1 | //通过var 进行一个声明变量,这里的 变量 等同于 函数表达式 |
当函数只使用一次时,通常使用IIFE (Immediately Invokable Function Expressions)
1 | (function() { |
Function构造函数
不推荐使用 Function
构造函数创建函数,因为它需要的函数体作为字符串可能会阻止一些JS引擎优化,也会引起其他问题。
1 | new Function (arg1, arg2, ... argN, functionBody) |
参数
1 | function printName(name){ //括号中的name为函数的参数 |
arguments
在函数体内可以通过arguments对象来访问参数数组,从而获取传递给函数的每一个参数。
1 | function howManyArgs(){ |
1 | function Add(){ |
注意:没有传递值的命名参数将自动被赋予undefined值,这就跟定义了变量但又没初始化一样。
1 | function printPersonInfo(name, age, sex){ |
重载
重载是很多面向对象语言实现多态的手段之一,在静态语言中确定一个函数的手段是靠方法签名——函数名+参数列表,也就是说相同名字的函数参数个数不同或者顺序不同都被认为是不同的函数,称为函数重载。
在JavaScript中没有函数重载的概念,函数通过名字确定唯一性,参数不同也被认为是相同的函数,后面的覆盖前面的。
1 | function addNumber(num){ |
以下代码输出结果是? 为什么
1 | var a = 1, b = 2, c = 3; |
1 | 1. |
1 | var a = 1; |
1 | 4 |