我开始学习Jquery,但我无法理解函数参数:(
如果您查看我的第一个代码并运行它:我的脚本将工作 (没有参数)。如果您查看我的第二个代码(带参数)并运行它:第二个脚本 也将工作!!
我的第一个问题:我在第二个脚本中设置参数了吗?
第二个问题:我怎么能检查是我的参数 设置 或 正确传递 到我的功能?
附:抱歉是NOOB,谢谢!!
//First code (WITHOUT PARAMETERS!!!)
$(document).ready(function () {
var addclass = $('p:first');
function AddClass() {
addclass.addClass('first');
if (addclass.is($('.first'))) {
alert('here');
}
else {
alert('not here');
}
}
$('.button').click(function () {
AddClass(addclass);
});
});
//Second code (WITH PARAMETERS)
$(document).ready(function () {
var addclass = $('p:first');
function AddClass(addclass) {
addclass.addClass('first');
if (addclass.is($('.first'))) {
alert('here');
}
else {
alert('not here');
}
}
$('.button').click(function () {
AddClass(addclass);
});
});
答案 0 :(得分:2)
你的第二个参数是正确的,并检查传递给函数的任何参数:
arguments.length
例如:
function myfunc() {
alert( arguments.length ); //output: 1, because you passed one argument
// and to get that
var myarg = arguments[0];
}
myfunc(someVar);
如果你没有传递任何论据,那么:
function myfunc() {
alert( arguments.length ); //output: 0, because you passed no argument
}
myfunc();
对于你的功能:
function AddClass(addclass) {
^-- declaring addclass is not necessary if you use like following
// checking for argument
if( arguments.length ) {
// arguments[0] will give you addclass
// you may not write addclass to function like above
}
addclass.addClass('first');
if (addclass.is($('.first'))) {
alert('here');
}
else {
alert('not here');
}
}
使用addclass
参数调用函数:
$('.button').click(function () {
AddClass(addclass);
});
答案 1 :(得分:0)
是的,你正确地传递了你的第二个函数的参数,看看传递给你的函数的参数可以通过两种方式看到它们:
单独使用数组表示法
function AddClass(addClass) {
console.log(arguments[0]); // This will show you the first parameter
// Some code...
}
使用jQuery函数$.each();
function AddClass(addClass) {
$.each(arguments, function (key, value) {
console.log(value); // Output the value of all of your arguments
});
}
在这种情况下,如果传递或不传递参数并不重要,因为您在AddClass函数中访问和修改的addClass变量在同一范围内。
您应该查看这篇文章JavaScriptVariableScope,了解实际代码中发生的情况以及两个代码示例正常工作的原因。