Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript事件语法问题_Javascript_Jquery_Events_Syntax - Fatal编程技术网

Javascript事件语法问题

Javascript事件语法问题,javascript,jquery,events,syntax,Javascript,Jquery,Events,Syntax,我注意到,当我在控制台中运行此javascript时,会得到以下输出: $(document).ready(function(){ console.log('a'); }); window.fbAsyncInit = function() { FB.init({appId: '{/literal}{$fbAppId}{literal}', status: true, cookie: true, xfbml:

我注意到,当我在控制台中运行此javascript时,会得到以下输出:

$(document).ready(function(){
    console.log('a');
});

window.fbAsyncInit = function() {
    FB.init({appId: '{/literal}{$fbAppId}{literal}',
            status: true,
            cookie: true,
            xfbml: true});

    FB.Event.subscribe('edge.create', function(response) {
        // Do something, e.g. track the click on the "Like" button here
        if(!liked)
        {
            {/literal}$.get('http://{$rooturl}/promotions/likecheck.php?CID={$CID}&ctype={$campaignTable}');{literal}
            liked=true;
        }
    });
};
(function() {
    console.log('b');
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());
我想知道在javascript中用括号括起函数意味着什么,例如:

b
a

这样做的目的是使此函数成为脚本标记中第一个执行的函数吗?

这样做的目的只是创建一个私有词法作用域,以便声明供该段代码使用的变量不会污染全局命名空间。它不会强制“先”执行代码


例如,变量“e”将在函数执行后消失,并且不会有“e”四处浮动来干扰任何其他代码。

这是一种创建函数(带有自己的闭包和变量)并立即调用它的方法,但不会污染全局命名空间。

这有时被称为“自调用函数”,尽管这个术语可能会产生误导。如前所述,它是一种创建匿名函数的方法,而不是将引用保存在任何地方,然后立即调用它

这个函数将永远不会被执行。你可能会质疑这个函数的有用性,但它实际上是一个错误,表明这是实际的程序代码,与函数或其他对象定义分开

但是,您仍然必须使用
var
关键字来执行此操作

例如:

    (function() {
    console.log('b');
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());
var outside = "Hello Outside";
(function()
{
  alert(outside); // Works as expected.

  // Define some variable and see what happens.
  globalVar = "Hello World, redux";
  var localVar = "Hello World";
}());

alert(globalVar);
alert(localVar); // Get an error: "localVar is not defined"