jquery 函数 (a,b) 需要解释

标签 jquery

我发现了这个codesnipe,但我不明白a和b在哪里给出。 它有效,所以它可能是 $window. jquery在这里做什么?

function (a, b) {
    var c = a('meta[name="csrf-token"]').attr("content");
}(jQuery)

html:

  <meta content="authenticity_token" name="csrf-param" />
<meta content="/Zsc0Ma07P8gupCp2k3Iu77nTOQDStpt6bToOlVt/gc=" name="csrf-token" />

最佳答案

function (a, b) {
    var c = a('meta[name="csrf-token"]').attr("content");
}(jQuery)// the function call is made here

提供的第一个参数是 jQuery,大的 jQuery 对象,相当于 $。在您的调用中,默认情况下 a = jQueryb = undefined,因为从未提供过。

(function(a, b) {
    console.log(a); // 5
    console.log(b); // 3
})(5, 3);

正如 @dystroy 指出的,这是一个较短的代码技巧,但它通常不用于缩短 undefined,它可以通过任何参数省略轻松获得。 JavaScript 通常会被缩小,但缩小器无法缩小默认关键字,例如 documentwindow。通过减小文件大小可以提高性能。

更常见的情况是:

!function(w, d){
    w.onload = function() {
        var x = d.getElementById("whatever");
    };
}(window, document);

以上所有内容都应该是 IIFE,或者立即调用。使用括号或任何数学运算符强制将计算结果作为表达式。

更新

将参数传递给函数。

(function(a, b) { // here I am defining an anonymous function. It has no name
    console.log(a); // It takes two params, a and b.
    console.log(b);
})(5, 3); // Because of the () parentheses around it: (function(){})
// the function is evaluated as an expression. 
// because of the second group of params (5, 3) the function is called.

想象一下你正在这样做。

function do(a, b) {
    // bla bla
};
do(5, 3);

将函数定义和函数调用粘合在一起,您将得到:

(function(a, b) {})(5, 3);

关于jquery 函数 (a,b) 需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16520061/

相关文章:

javascript - 如何从异步调用返回响应?

javascript - jQuery 如何从字典中过滤两个日期和时间,并在新数组中分组

javascript - 如何为动态添加的按钮添加点击监听器?

jquery 仅在第二次单击时触发

jquery - 使用 jQuery 通过索引获取多个元素

使用 asset_url 进行 Jquery UI Assets 管理

javascript - 如何使用 CSS 隐藏 <select> 菜单中的 <option>?

jquery - 我可以使用 jQuery 进行 iPhone 开发吗

jquery - getJSON 返回未定义

javascript - 如何在 JavaScript 中将选项卡式树转换为 JSON?