函数

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

比如我们有一个特定的功能需要三条语句实现

s1;
s2;
s3;

那么每次想实现这个功能的时候就需要写这三句话,很麻烦,我们可以把这三条语句打包为一个函数

function doSomething(){
  s1;
  s2;
  s3;
}

这样每次想实现功能的时候我们就调用一下函数就可以了,调用函数通过函数名称()的形式调用

doSomething();

函数可以拥有参数,参数影响函数的行为。

函数也可以用过返回值,将函数的运行结果反馈给函数的调用者。

函数声明

JavaScript 使用关键字 function 定义函数。

函数可以通过声明定义,也可以是一个表达式。

Function() 构造函数

首先函数也是对象的一种,我们可以通过其构造函数,使用new来创建一个函数对象

函数的参数写在前面,函数体写在后面即可

var myFun = new Function("a", "b", "return a * b");
myFun(1,2) // 3

不推荐使用

函数声明

function functionName(){
    statement;
}

使用function关键字可以声明一个函数,看个例子

function myFunction(a, b) {
    return a * b;
}

函数表达式

JavaScript 函数可以通过一个表达式定义。

函数表达式可以存储在变量中:

var myFun = function (a, b) {return a * b};

以上函数实际上是声明一个 匿名函数 (也就是没有名称的函数);然后将这个函数存在变量 myFun 中。

auguments

在函数内部,你可以使用arguments对象获取到该函数的所有传入参数

function myFun(a, b){
    console.log(a);
    console.log(b);
    console.log(arguments);
}

已不推荐使用

返回值

有时候我们希望在函数执行后给我们一个反馈,就像表达式一样,给我们个结果,我们可以通过return来实现

function myFun(a, b){
    return a + b;
    console.log("never run")
}

var result = myFun(2, 3);

这样我们就能拿到函数希望给我的反馈了,调用return后,函数立即中断并返回结果,即使后面还有语句也不再执行

其实我们不写return语句,函数也会默认给我们返回undefined

函数提升

提升(Hoisting)是 JavaScript 默认将当前作用域提升到前面去的的行为。

提升(Hoisting)应用在变量的声明与函数的声明。

因此,函数可以在声明之前调用:

console.log(fn); // undefined,但是不会报错
var fn = function(){}

这是因为JS自动将函数声明提升了。

以上代码等价于:

var fn;
console.log(fn);
fn = function(){}

但是如果我们使用函数声明的方式,那么即使函数写在最后也可以在前面语句调用,

fn(); // "1"

function fn(){
    console.log('1');
}

这是因为以上代码等价于:

function fn(){
    console.log('1');
}

fn(); // "1"

results matching ""

    No results matching ""