JS学习|匿名函数和字面量——JS学习

这两天在学习JS,学习到了匿名函数,和以前见过的函数的定义有很多不同,所以写此文章来探讨一下。


一、匿名函数

说道匿名函数,其实就是没有函数名的函数,通常只需要带一个()就可以被调用,实例如下:



function(){ alert("123"); //弹出警告“123” }//匿名函数定义


(function(){ alert("123"); }())//匿名函数使用



【JS学习|匿名函数和字面量——JS学习】
var box=new function(){ alert('123'); }//匿名函数给一个对象box(); //执行匿名函数


以上三个代码框就是匿名函数的声明以及使用方法,具体来讲,和一般的函数也没有什么区别,加了括号就是可以执行的,他们还可以带参数:
var double = function(x) { return 2* x; }

但是他们和闭包,构造函数一起用起来就很是有用了。

二、字面量

什么是字面量呢,在js的代码中,他就是一个匿名函数的函数代表字符,作用是让一个对象很快的理清楚他的输出方法和功能结构。
定义对象的属性和方法:
A、传统方法



function objrun(){ return ‘123’; } var box = new Object(); box.name=’abc’; box.age = 28; box.run = objrun; alert(box.run()); //结果为123 alert(box.run); //结果为function objrun(){return ‘123’; }


B、用字面量的方法



var box = { name:’abc’, age:28, run:function(){ return ‘123’; } } alert(box.run());


可见run这个属性就是调用的一个匿名函数来实现的输出,其实还可以在匿名函数里协商其他属性的内容方便调用和输出。
对象字面量的定义方式,可以轻松搞定函数大量参数需要一一对应输出的情况。他的对策就是给函数传入一个对象,而这个对象是用字面量的方式定义的,属性和值对应的方式可以一目了然他们的关系,因为函数只是一段代码,必须调用才能执行。



三、闭包

闭包的英文单词是closure,这是JavaScript中非常重要的一部分知识,因为使用闭包可以大大减少我们的代码量,使我们的代码看上去更加清晰等等,总之功能十分强大。

闭包的含义:闭包说白了就是函数的嵌套,内层的函数可以使用外层函数的所有变量,即使外层函数已经执行完毕(这点涉及JavaScript作用域链)。
例子:



function(){ vara=0; for(var i=0; i<100; i++){ function(){ a=a+1; }; }; alert(a); }//执行结果就是输出a的值为99


由于内层的匿名函数在for循环中一直执行,导致外层函数没有结束,所以a一直没有被释放,导致了a一直在加一,内层的这个函数就是一个闭包的存在。 匿名函数最大的用途是创建闭包(这是JavaScript语言的特性之一),并且还可以构建命名空间,以减少全局变量的使用。这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!


四、总结

看似一个小小的匿名变量,竟然有了这么多有趣,有用的用处,让我们的程序更加的优化,实在是不能够小瞧他的作用啊,匿名函数的应用应该不少,原型模式的实现多少也和他有些关系,所以对于以上三个概念的理解很是重要。

    推荐阅读