Javascript jQuery函数和自调用匿名函数之间的区别

Javascript jQuery函数和自调用匿名函数之间的区别,javascript,jquery,function,Javascript,Jquery,Function,普通函数和自调用匿名函数之间有什么区别?在哪些情况下我应该使用自调用匿名函数?我真的不明白他们之间的区别。我如何使用SIAF Javascript中的函数是一级公民,可以像对象一样传递。当您这样定义函数时: function() { ... }; 这就是你正在做的一切。定义它。目前还没有使用它。您可以将其分配给一个变量,并在以后调用它(如果愿意),或者将该变量作为参数传递给另一个函数 自调用匿名函数是Javascript中用于名称空间的非常有用的模式组件。我更喜欢使用更准确的名称立即调用函数表

普通函数和自调用匿名函数之间有什么区别?在哪些情况下我应该使用自调用匿名函数?我真的不明白他们之间的区别。我如何使用SIAF

Javascript中的函数是一级公民,可以像对象一样传递。当您这样定义函数时:

function() { ... };
这就是你正在做的一切。定义它。目前还没有使用它。您可以将其分配给一个变量,并在以后调用它(如果愿意),或者将该变量作为参数传递给另一个函数

自调用匿名函数是Javascript中用于名称空间的非常有用的模式组件。我更喜欢使用更准确的名称立即调用函数表达式(IIFE)。为了理解这种模式,我建议您阅读javascript中的闭包:

这为您提供了一个名称空间,以避免全局范围污染,并允许您定义私有函数和成员


您可以在这里找到更多信息:

我相信SIAF有很多用途!但它主要用于名称空间隐私

为了隐私

var normalkey=89000333;
var privateKey= (function(param){                     
    var secretkey = 123411; 
   //it is private , nothing outside this function will know of it
    var newkey=param+secretkey ;                                     
    return newkey
  })(normalkey); //passing normalkey as param
您得到了一个privateKey,而没有调用函数自己计算它,用于计算privateKey的secretkey在SIAF中是安全的

用于名称空间

  var fruits= (function() {
    return {
       name: ["apple", "orange"];
       color: [{"red","green"},"orange"]
    }
   })();
$(function(){}); //seem familiar? -jquery
不是声明水果名,而是水果色。。等等。。在全局名称空间中,可以从“水果”中获取所有内容

用于自我调用

  var fruits= (function() {
    return {
       name: ["apple", "orange"];
       color: [{"red","green"},"orange"]
    }
   })();
$(function(){}); //seem familiar? -jquery

可能的重复我是否理解正确,SIAF中的VAR不是全局VAR?所以我不能将它们与窗口函数一起使用?它们不是严格意义上的全局变量。但是,如果您在SIAF(或IIFE)中公开它们,您可以在javascript文件的其他地方访问它们。