Javascript事件语法问题
我注意到,当我在控制台中运行此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:
$(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"