Javascript/JQuery:将整行代码分配给函数参数?

Javascript/JQuery:将整行代码分配给函数参数?,javascript,jquery,function,parameters,Javascript,Jquery,Function,Parameters,是否可以将整行代码分配给函数参数?举个例子: function testFunc(parameter1){ parameter1; } testFunc($(".someClass").text("someText")); 当该函数与该参数一起使用时,parameter1是否可以替换为代码行 我是JavaScript和jQuery新手,所以我只是好奇这是否可能。我以前没有看到有人问过这样的问题。但如果有人问起,我们将非常感谢与该问题的链接。谢谢听起来像是你发明了回调:) 传递一个实际

是否可以将整行代码分配给函数参数?举个例子:

function testFunc(parameter1){
    parameter1;
}

testFunc($(".someClass").text("someText"));
当该函数与该参数一起使用时,
parameter1
是否可以替换为代码行


我是JavaScript和jQuery新手,所以我只是好奇这是否可能。我以前没有看到有人问过这样的问题。但如果有人问起,我们将非常感谢与该问题的链接。谢谢

听起来像是你发明了回调:)

传递一个实际函数并用()调用它


是的,这是可以做到的,因为jQuery将对其进行开发并返回一个对象。

这里的关键观点是,函数可以像对待任何其他变量一样对待

例如:

var i = 1;
var f = function() { console.log('hello!'); };
这里的
f
是一个值,就像
i
一样,但您可以像调用任何其他函数一样调用它:

f(); // prints 'hello!' in the console
function g(h) { h(); }

g(f); // prints 'hello!' in the console
因为它是一个值,所以可以将其传递给另一个函数:

f(); // prints 'hello!' in the console
function g(h) { h(); }

g(f); // prints 'hello!' in the console

花点时间确保您理解上述代码。我故意用了模糊的名字,这样你就可以学习机械。如果您有任何问题,请告诉我。

参数未分配给函数,它们是传递/发送的/[在此处插入其他同义词]

任何表达式(任何计算结果为某个值的代码)都可以传递

在您的示例中,
$(“.someClass”).text(“someText”)
是一个计算结果为jQuery对象的表达式,因此您可以毫无疑问地将此代码单元用作函数的参数

但是,如果您想传递一些必须作为现有函数进程一部分执行的代码,则必须使用封装该行为的函数表达式

例如


是的,您可以像传递常规基元变量一样传递函数回调

在您的情况下,您应该在执行前检查参数类型

function testFunc(parameter1){

    if(typeof parameter1==="undefined"){
       //arguments[0] will fall here
       console.log("No arguments case. parameter1 not defined")
    }
    else //function check 
    if(typeof parameter1==="function"){
       //you can parameter function here.
        return parameter1();
    }
    else{
        //regular case value or object, other than function types fall here
        console.log("not a function, received param type: "+ typeof(parameter1));
        return parameter1;
    }

}

$(function (){
    //let us say you have below vars
    var primitiveVar="test",
        fun = function(){console.log("function fun call")};

    //no args here
    testFunc();

    //sending primitiveVar
    testFunc(primitiveVar);

    //below is your call with jQuery Obj
    testFunc($(".someClass").text("someText"));
});

这不是传递的一行代码。。。它是一个表达式,产生一个jQuery对象,并传递给函数。如果要传递回调,它必须是一个实际的函数。不使用参数,而是使用
参数[0]
怎么样?这样行吗?怎么行?它是否像
参数[0]()
而不是
callback()
?不使用参数而使用
参数[0]
怎么样?这行吗?当然可以,但是不指定要绑定参数的名称是没有意义的。这样做的唯一原因可能是如果您允许可变数量的参数,其中每个参数的索引对其他参数没有明确的用途。如何做到这一点?它是否像
参数[0]()而不是
回调()?对不起,我的意思是
参数[0]()而不是
f()在您的示例中。