Javascript 定义函数的不同形式
以下形式的函数定义有什么区别:Javascript 定义函数的不同形式,javascript,jquery,Javascript,Jquery,以下形式的函数定义有什么区别: $.myFunction = function() { //function body }; var myFunction = function() { //function body }; $(myFunction = function() { //function body }); 第一个是将函数myFunction添加到$中,该函数可以是任何内部使用$的JavaScript库,如jQuery、mooTools、Prototype
$.myFunction = function() {
//function body
};
var myFunction = function() {
//function body
};
$(myFunction = function() {
//function body
});
第一个是将函数
myFunction
添加到$
中,该函数可以是任何内部使用$
的JavaScript库,如jQuery、mooTools、Prototype等
在第一个函数中,您只需将自己的函数添加到由$
指定的javascript库中
第二种是函数表达式,与函数声明相反,后者具有以下形式:
function myFunction() {
//function body
}
第三个看起来很奇怪,但它也是在JavaScript库的上下文中使用的函数表达式,因为
$
,所以不管该库是什么意思
要了解函数表达式和函数声明之间的区别,请查看这篇精彩文章:
foo1(); // alerts "I am function declaration"
foo2(); // error, undefined function
function foo1() {
alert('I am function declaration');
}
var foo2 = function() {
alert('I am function expression');
};
foo1(); // alerts "I am function declaration"
foo2(); // alerts "I am function expression"
仅供参考,还有自调用匿名函数和自inovking命名函数:
// self invoking anonymous function
(function(){
// code
})();
// self invoking named function
(function foo(){
// code
})();
以及使用以下字符转换为函数表达式的函数声明:
! function(){
// code
})();
+ function foo(){
// code
})();
请注意,自调用函数一经解析就会运行,因为它们的签名末尾有
()
。实际上只有一个函数定义,我称之为第二个函数定义。第一个是用该函数扩展全局jQuery对象(或使用美元符号的任何其他库),第三个很奇怪。假设“$”代表jQuery(在这里似乎很明显),第三个语法定义一个匿名函数并将其作为参数传递给jQuery,这是注册jQuery.DocumentReady回调的快捷方式
$.myFunction = function() {
//function body
};
这将创建一个函数作为$
对象的属性。如果您使用的是jQuery,那么$
是全局jQuery
对象。您可以使用$.myFunction()
这将创建一个分配给名为
myFunction
的变量的函数。如果在另一个函数中执行此操作,则myFunction
将仅在该范围内可用
这一个正在做两件事,让我们将其分解为两个步骤,以使其更清楚:
myFunction = function() { // step 1
//function body
};
$(myFunction); // step 2
myFunction
的全局变量的函数。该变量是全局变量,因为您没有使用var
关键字。一般来说,您可能不想使用全局变量,当其定义不是很明显时,当然也不想使用myFunction
传递给jQuery,以便在DOM完成加载后执行。有关更多信息,请参阅
更常见的做法是将函数传递给jQuery,而不将其分配给任何变量,即
$(function() {
//function body
});
您好,可能是重复的,它与您引用的问题不重复。
$
用于许多框架,而不仅仅是jQuery。第三个和第一个定义应该是等价的,将myFunction
添加到$
对象/“namespace”是的,我指的是jQuery或任何其他库。第三个可以,但是这个声明有什么用呢?似乎没有必要第一个的用法是什么?为什么有人要向$添加函数?在本例中,第一个函数的用法是扩展另一个对象。以这个例子varo={};o、 foo='bar'
第一个的用法是什么?为什么有人想向$添加函数?@baltusaj:假设$
是用于jQuery的,并且要向jQuery对象添加自己的函数,请使用第一种方法。
myFunction = function() { // step 1
//function body
};
$(myFunction); // step 2
$(function() {
//function body
});