目录


函数也是一个对象。函数中可以封装一些功能(代码),在需要时可以执行这些功能。函数中可以保存一些代码在需要时调用。

函数对象具有全部普通对象的功能。

// 创建一个函数对象
var fun = new Function();

// 使用typeof检查一个函数对象时,会返回function
console.log(typeof fun) // --> function anonymous()

// 可将要封装的代码以字符串的形式传递给构造函数
// 封装到函数中的代码不会立即执行
// 仅为教学中使用如下写法,开发中几乎不使用构造函数创造函数对象
var fun = new Function("console.log('Hello');");

// 调用函数时,封装的代码才会执行
// 调用函数语法:函数对象();
fun(); // --> Hell

函数声明提前

// 参见 “JS 基础语句”——“变量声明提前”
fun();  // 成功执行
fun2(); // 错误调用

// 函数会在所有代码执行之前被创建
// 故可以在函数声明前被调用
function fun(){
    console.log("A Test.");
}

// 由于fun2可以被提前声明,故没有被赋值
// 只有在执行到该行的时候才会被创建
// 故不可在函数声明前被调用
var fun2 = function(){
    console.log("A Test 2.");
};

创建函数

使用函数声明创建函数

/* 语法: 
 * function 函数名([形参1,2,3...]){  // 中括号中为可选参数
 *     ...
 *     }
 */
function fun2(){
    console.log("This is a code.");
}

// 匿名函数,一般会报错
function(){
    console.log("This is a code.");
}

使用函数表达式创建函数

/* 语法:
 * 将匿名函数给一个函数名
 * var 函数名 = function([形参1,2,3...]){
 *     ...
 * }
 */

立即执行函数

// 立即执行 匿名函数
// 立即执行函数一般仅执行一次
(function(a){
    console.log(a);
})("匿名函数");