首页 > 网站 > WEB开发 > 正文

JavaScript匿名类整理学习笔记

2024-04-27 14:21:36
字体:
来源:转载
供稿:网友

javaScript匿名类整理学习笔记

以下为总结在开源的Javascript框架中能看到很多这样语法结构(function(){})()比如我最近看的jQuery,及chediter。刚开始的时候我看到这样的结果有点奇怪,它是怎么执行的,并且这是什么样的语法结构,最近偶尔看闭包的时候,才发现原来这是JavaScript种匿名函数(看到这个有点汗,java的匿名类见过,就从来没想到JavaScript中会有匿名函数,也是学的不够牢固)。现在我们了解到以上是JavaScript匿名函数的语法结构,怎么声明函数,匿名函数JavaScript是怎么执行的,匿名函数的代码模式。这些问题

就是我们接下来要探讨的问题。第一:怎么声明函数。方法一 function functionName( arguments ){ body }在JavaScript函数典型函数,也叫有名函数(因为它存在functionName)。function fun(){ alert( "test" ) }// 1fun();//2第1行这是JavaScript声明有名函数最常见的方法,也是我们个人开发中最常用的声明方式。该语法结构为声明一个名叫fun的函数(注意JavaScript只会编译该函数,并生成fun函数的对象,不会执行该函数)。而第二句为调用该函数即执行该函数。方法二 var fun = function ( arguments ){ body } //又称函数字面量var fun = function( ){ alert( "test" ) }该函数复制给变量fun,其实后面的函数为一个匿名函数方法三 var fun=new Function([arguments], Body);将函数复制给变量fun注意该种方式会存在性能问题,在执行 new Function方法时它不是静态编译和执行,而是动态编译和执行,即当执行new Function时才编译函数主体,并生成函数对象,每调用一次就执行编译及执行的过程【类似于函数eval()】,它比其他方是多了编译过程【会使用浏览器的编译器

】,如果再循环体中执行效率会比较低;上面三种定义函数方式中,后两种方式是采用匿名函数的方式什么的变量。第二:匿名函数是怎样执行的。对于语法结构

Js代码收藏代码
  1. (function(){
  2. alert("test");
  3. }
  4. )()

其实是由两部分组成(function(){ alert( "test" );})表示的为匿名函数的定义。而对于接在后面的"()"代表的意思为执行定义的匿名函数。上述的语法结构也等价于以下的语法结构

Js代码收藏代码
  1. vartest=function(){
  2. alert("test");
  3. //函数内容
  4. };//声明匿名类并将匿名函数赋予变量test。
  5. test();//执行test

可以看出匿名类可以直接在类后面接()代表执行,这也是我们在jQuery等开源的框架时,导入相应的包以后就可以直接使用对象的原因。它已经在匿名函数中完成相应的初始化及封装。知道匿名类是怎么执行的,那我们常用的匿名函数有哪些呢。第三:匿名函数调的代码模式hedger wang介绍了几种匿名函数的代码模式:错误模式:其无法工作,浏览器会报语法错。

Js代码收藏代码
  1. function(){
  2. alert(1);
  3. }();

以上错误原因是()能更改表达式的优先级,使用()后,将先执行()里面的代码,而对于表达式()对于JavaScript编译不过去的。函数字面量:首先声明一个函数对象,然后执行它。 也称为立即执行函数。

Js代码收藏代码
  1. (function(){
  2. alert(1);
  3. })();

编译一定能通过,第一()是函数定义,而第二个()代表执行第一括号里面的内容优先表达式:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。

Js代码收藏代码
  1. (function(){
  2. alert(1);
  3. }());

Void操作符:用void操作符去执行一个没有用圆括号包围的一个单独操作数。

Js代码收藏代码
  1. voidfunction(){
  2. alert(1);
  3. }()

这三种方式是等同的,hedger wang因为个人原因比较喜欢第3种,而在实际应用中我看到的和使用的都是第1种以及上面提到的 new Funtion( )的定义方式。

灵活的配合var关键字,匿名函数可以有效的保证在页面上写入Javascript,而不会造成全局变量的污染。也能增加代码的可读写行,减少代码量,提高程序的性能。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表