函数也是一个对象。函数中可以封装一些功能(代码),在需要时可以执行这些功能。函数中可以保存一些代码在需要时调用。
函数对象具有全部普通对象的功能。
// 创建一个函数对象
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);
})("匿名函数");