匿名函数

2015-08-24  本文已影响0人  BR

函数定义的两种方式:

1.函数声明,使用var声明  var a = function() {};

等号右边可以是匿名函数,也可以是具名函数,但是都不能立即执行,必须通过变量a实例化一个 对象才可以调用:

//匿名函数

var a = function (){

         alert(1);

}

var b = new a(); //返回1

//具名函数

var d = function e(){

        alert(2);

}

//直接调用e();会报错

2.函数表达式;

function aa(age){

           this.age = age;

           this.foo = function() {

                   alert(1);

            }

}

//要调用.foo()的方法或者查找属性age,必须new实例化一个对象,直接在函数aa中不能调用或查找

var a = new aa(12);

a.foo();  //alert(1);

a.age;   //12

关于立即调用的函数表达式(LIFE),又叫自执行的函数表达式的方法:

(function() {})();

(function(){}());

[function(){}()];

~function(){}();

!function(){}();

-function(){}();

+function(){}();

delete function() {}();

typeof function() {}();

void function() {}();

new function() {}();

new function() {};

var f = function() {}();

1, function() {}();

1 ^ function() {}();

1 > function() {}();

//一元运算符,他们的作用是告诉js解析器附近的匿名函数是一个表达式

3.函数必须要有函数名,即使是聪明如我的匿名函数也必须要使用var来声明,一个没有函数名的函数要么是一个方法,要么就是自执行函数,若一个匿名函数既不是方法,又不是立即调用函数,就会报错啦!

4.关于一些错误的处理:

(1).function(){}();

看来是想要立即调用一个匿名函数表达式,但是实际上是声明了一个函数,但是函数声明必须要有标识符作为函数的名称;

var a  =function(){}();

(2)function  f(){}();

计划是立即调用一个具名函数表达式,但是实际上是声明了一个函数名为f的函数,末尾()作为分组运算符,必须要提供表达式作为参数;

上一篇下一篇

猜你喜欢

热点阅读