JavaScript函数定义语法总结

来源:互联网 发布:淘宝 印度伟哥 编辑:程序博客网 时间:2024/05/16 19:29

JavaScript函数定义语法总结

作者 黄诚

QQ群:65643887

1.正常的定义方法:

function functionName([arguments]){

     Javascript statements

     [return expression]

}

1:

function evalScript( i, elem ) {

         if ( elem.src )

                   jQuery.ajax({

                            url: elem.src,

                            async: false,

                            dataType: "script"

                   });

         else

                   jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );

         if ( elem.parentNode )

                   elem.parentNode.removeChild( elem );

}

 

2. 匿名函数

上面的其中的functionName可以省略,成为匿名函数:

var func2 = function(…){…};

1

var max = function(a, b){

if(a>b) return a;

return b;

}

2

dojo.isString = function(/*anything*/ it){

//summary:

//Return true if it is a String

return !!arguments.length && it != null && (typeof it == "string" || it instanceof String);

// Boolean

}

3

function( selector, context ) {

// The jQuery object is actually just the init constructor 'enhanced'

return new jQuery.fn.init( selector, context );

}

 

3.匿名函数加默认参数

(function(){})();语法表示一个匿名函数的定义

 

1

var iii = (function(a,b){return a+b;})(1,2);

alert(iii);

后面的括号(1,2)表示创建完后立即进行这个函数调用。结果是弹出3。它的优点是在很长的代码段中进行模块化设计或者想避免命名冲突,这是一个不错的解决办法。

 

2

(function(){

var mp = dojo.config["modulePaths"];

    if(mp){

    for(var param in mp){

        dojo.registerModulePath(param, mp[param]);

        }

    }

})();

 

4.大括号({})语法

JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上类的概念。所以它提供一个简单的方式类创建对应,即:

{

property1:statement,

property2:statement2,

propertyN:statementN

}

通过大括号括住多个属性或方法及其定义(这些属性或方法用逗号割开),来实现对象的定义,这段代码就直接定义个具有n个属性或方法的对象,其属性名和其定义之间用冒号(:)隔开。

1

this.dojo = {

_scopeName: "dojo",

    _scopePrefix: "",

    _scopePrefixArgs: "",

    _scopeSuffix: "",

   _scopeMap: {},

   _scopeMapRev: {}

};

//调用dojo对象的属性scopeName

alert(dojo. scopeName);

 

2

jQuery.browser = {

         version: (userAgent.match( /.+(?:rv|it|ra|ie)[//: ]([/d.]+)/ ) || [0,'0'])[1],

         safari: /webkit/.test( userAgent ),

         opera: /opera/.test( userAgent ),

         msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),

         mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )

};

 

5. new Function创建方式:

var funcName = new Function(p1, p2, …, pn, body);

 

参数的类型都是字符串,p1pn表示所创建函数的参数名称列表,body表示所创建函数的函数体语句,funcName就是所创建函数的名称。

可以不指定任何参数创建一个空函数,不指定funcName创建一个无名函数,当然那样的函数没有任何意义。

 

1

下面的定义是等价的

var myFunction = new Function(“a”, “b”, “c”, “return a + b + c”);

var myFunction = new Function(“a, b, c”, “return a + b + c”);

var myFunction = new Function(“a, b”, “c”, “return a + b + c”);

 

函数里面使用大括号语法。

jQuery.extend(

{

noConflict: function( deep ) {

window.$ = _$;

                   if ( deep )

window.jQuery = _jQuery;

                   return jQuery;

         }

}

);

解析。

jQuery首先定义了一个extend函数。

jQuery.extend = jQuery.fn.extend = function() {

         // copy reference to target object

         var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;

 

         // Handle a deep copy situation

         if ( typeof target === "boolean" ) {

                   deep = target;

                   target = arguments[1] || {};

                   // skip the boolean and the target

                   i = 2;

         }

...

};

jQuery.extend({…});是构造了一个对象作为extend函数的参数进行调用。

原创粉丝点击