自我执行并在JS中调用一个函数

Jam*_*mes 3 html javascript jquery function

我想有一个函数,可以通过其他函数调用它,并在声明时自行执行.

喜欢:

function some(var_one, var_two)
{
    // do something
}(var_one, var_two); // declare and execute (doesn't work)

function add_pair()
{
    // do something
    some(James, Amber);
}
Run Code Online (Sandbox Code Playgroud)

这样做的正确语法是什么?

Jam*_*ice 5

您无法调用函数声明.宣言之后的那对括号根本不会做任何事情.你可以这样做:

var some;
(some = function (var_one, var_two) {
    console.log(var_one, var_two);
})("a", "b");

?some("b", "c");????
Run Code Online (Sandbox Code Playgroud)

上面的例子将记录"a,b",然后是"b,c".但这看起来有点乱.你可以坚持使用你拥有的东西并像平常一样调用函数:

function some(var_one, var_two) {
    console.log(var_one, var_two);
}
some("a", "b");
Run Code Online (Sandbox Code Playgroud)

更新

请注意,通过将函数声明更改为表达式(这是我上面的第一个示例中所发生的情况),您将删除在函数声明之前调用函数的能力,因为声明被提升到作用域的顶部.他们出现,并且任务发生到位.使用函数声明,以下示例完美地运行:

some("a", "b"); // Call it before it appears to be declared
function some(var_one, var_two) {
    console.log(var_one, var_two);
}
Run Code Online (Sandbox Code Playgroud)

我真的看不出有什么理由需要将声明和调用合并为一个.