函数定义

函数定义

一个固定的功能或者是程序段被封装的过程,实现一个固定的功能或者是程序,在这个封装体中需要一个入口和一个出口,入口是参数,出口是返回。

函数声明

// 1、function命令
function functionName(arg0, arg1, ... argN) {
    函数的执行语句;
}

// 2、函数表达式-字面量
// 注意:test1是函数名,只在函数内部可见,外部不可见,不写就是匿名函数
var test = function test1() {
    var a = 1,
    console.log(a);
}

// 匿名函数
var test = function() {
    var a = 1,
    console.log(a);
}

函数的重复声明

// 如果同一个函数被多次声明,后面的声明就会覆盖前面的声明
function f() {
  console.log(1);
}
f() // 2

function f() {
  console.log(2);
}
f() // 2

函数提升

// 函数function声明可以被提升
f();
function f() {
    console.log(1); // 1
}

// 函数表达式不能被提升
f2();
var f2 = function (){
    console.log(2);
};
// TypeError: f2  is not a function

函数的属性和方法

(1)name属性

// 返回函数的名字
function f1() {}
console.log(f1.name); // "f1"

// 匿名函数返回变量名
var f2 = function () {};
console.log(f2.name); // "f2"

// 返回函数表达式的名字
// 注意,真正的函数名还是f3,而myName这个名字只在函数体内部可用
var f3 = function myName() {};
console.log(f3.name); // "myName"

// name的作用:获取参数函数的名字
var myFunc = function () {};

function test(f) {
    console.log(f.name); // myFunc
}
test(myFunc);

(2)length属性

// length:返回函数预期传入的参数个数,即函数定义之中的参数个数(形参)
function f1(a, b) {}
console.log(f1.length) // 2

(3)toString属性

// toString:返回一个字符串,内容是函数的源码
function f2() {
    a();
    b();
    c();
}
console.log(f2.toString());

// function f2() {
//     a();
//     b();
//     c();
// }