javascript/jQuery中函数定义的差异
第1版:javascript/jQuery中函数定义的差异,javascript,jquery,Javascript,Jquery,第1版: function add(){ var a = 2; ... ... ... } 第2版: $(function(){ var ... .. .. }); 两个版本的主要区别在哪里?对于版本2,它没有函数名。如果它只是在函数中运行代码,为什么不删除$function(){..}。这真的让我很困惑,因为现在很多脚本都是以版本2的风格编写的。请帮我澄清一下我的困惑 示例1定义了一个名为add的函数,而示例2只是将一个匿名函数传递给jQuery函数 $(function(){ var .
function add(){
var a = 2;
...
...
...
}
第2版:
$(function(){
var ...
..
..
});
两个版本的主要区别在哪里?对于版本2,它没有函数名。如果它只是在函数中运行代码,为什么不删除
$function(){..}代码>。这真的让我很困惑,因为现在很多脚本都是以版本2的风格编写的。请帮我澄清一下我的困惑 示例1定义了一个名为add
的函数,而示例2只是将一个匿名函数传递给jQuery函数
$(function(){
var ...
..
..
});
$(函数(){…})代码>语法是$(document).ready(function(){…})的缩写代码>,它将函数作为参数,然后在DOM就绪时执行该函数。这用于确保在执行代码之前,您希望在Javascript中使用的元素确实存在
编辑以解决以下评论:
.click()
jQuery函数有两种用途。如果传递一个函数,那么它将创建一个附加的click事件处理程序,该处理程序将在触发事件时运行该函数。如果不传递函数,那么它将触发所有已附加到jQuery对象中元素的click事件处理程序。因此,是的,您可以在没有函数的情况下调用。click()
,但它做的事情不同
您不能执行以下操作:
$(document).ready(var foo = 2;...);
因为这会给你一个语法错误。但是,您可以用通常的方式定义函数,然后将其传递给调用$(document).ready()
:
$(function(){})
实际上是在$(document.ready()
中包装函数;这样,在加载DOM之前,代码不会运行。我认为$(function()
是jQuery中文档加载的简写
如果要创建“jQuery函数”,需要执行以下操作:
jQuery.fn.yourfunctionname = function() {
//code in here
}
简而言之,您的第一个函数实际上定义了一个名为add
的函数,下一个函数就是这个函数的缩写:
$(文档).ready(函数(){
是一个简单的js函数
$(function(){
var ...
..
..
});
是jQuery Document.ready的快捷方式:
$(document).ready () {};
您可能还想询问:
(function($){
var ...
..
..
})(jQuery);
这在$
符号上给出了一个闭包-因此您可以使用美元(在其他库可能已加载的地方)。第一个版本将函数添加到窗口名称空间,而第二个版本的作用域仅在$(function(){…
的作用域,因此无法从括号外的代码访问。示例1和示例2完全不同。jQuery是javascript,因此函数定义是相同的
$(function(){…
只是$(document).ready(function(){…
)的简写,而示例一实际上正在生成一个名为add
的新函数
您可以在ready
函数中生成如下添加函数:
$(function(){
function add(){
var foo = 1;
}
});
jQuery不是一种定义和语法与javascript不同的全新语言,它是一种使用javascript语法和定义用javascript编写的工具包
将jQuery本身看作一个大函数,一个定义为$…的函数,因此jQuery不是function add(){}
jQuery,而是一个名为$function$(){}
的函数。您还可以使用与普通javascript函数相同的语法传递jQuery参数
function add(arg){
//do something with arg
}
add('#elem');
function $(arg){
//do something with arg
}
$('#elem');
你看,jQuery只是一个非常复杂的函数,我们可以传递多种类型的参数,并返回许多有用的工具。但是它的语法和定义与传统的javascript没有什么不同
function add(arg){
var added = arg + 12;
return this.alertAdded = function(){
alert(added);
}
}
add(30).alertAdded(); // will alert 42
//vs
$('#elem').fadeOut(); // same syntax but referring to very different functionality.
下面是一个JQuerysh语法的例子,它是普通的老JS。ref:实际上,如果我们替换ready to“click”,为什么我们需要在里面有一个函数?我们可以只运行代码而不使用函数()?
function add(arg){
var added = arg + 12;
return this.alertAdded = function(){
alert(added);
}
}
add(30).alertAdded(); // will alert 42
//vs
$('#elem').fadeOut(); // same syntax but referring to very different functionality.