我是JavaScript和YUI的新手.在YUI库示例中,您可以找到此构造的许多用法:
(function() {
var Dom = YAHOO.util.Dom,
Event = YAHOO.util.Event,
layout = null,
...
})();
Run Code Online (Sandbox Code Playgroud)
我认为最后几个括号是在声明之后执行该函数.
...但是围绕函数声明的前一组括号怎么样?
我认为这是一个范围问题; 这是将内部变量隐藏到外部函数和可能的全局对象中.是吗?更一般地说,这些括号的机制是什么?
我们为什么要用({ })?
它是代表吗?
使用这种语法意味着什么?
我们用它包装什么?
例如:
$.ajaxSetup ({ // <-- THIS
error: fError,
compelete: fComp,
success: fSucc
}); // <-- AND THIS
Run Code Online (Sandbox Code Playgroud) 以下内容将在Firebug或jsconsole.com或其他Javascript交互式控制台中显示:
>>> foo = { a : 1, b : 2.2 }
Object { a=1, more...}
>>> foo.a
1
>>> foo.b
2.2
>>> { a : 1, b : 2.2 }
SyntaxError: invalid label { message="invalid label", more...}
>>> { a : 1 }
1
Run Code Online (Sandbox Code Playgroud)
为什么是1返回{a : 1}以及为何{a : 1, b : 2.2}给了一个错误?在Ruby中,它们会以您定义它的方式返回.
在Firefox控制台中,此代码将生成错误:
{"d" : ["bankaccountnumber", "$1234.56"] }
> SyntaxError: invalid label {
> message="invalid label", more...}
Run Code Online (Sandbox Code Playgroud)
这段代码工作得很好
{d : ["bankaccountnumber", "$1234.56"] }
> ["bankaccountnumber", "$1234.56"]
Run Code Online (Sandbox Code Playgroud)
此代码也可以正常工作
var a = {'d' : ["bankaccountnumber", "$1234.56"] };
a.d
> ["bankaccountnumber", "$1234.56"]
Run Code Online (Sandbox Code Playgroud)
有人可以帮助解释为什么会有差异?谢谢!
有人可以向我解释一下,在javascript中,返回结果的结果会有所不同:
› {} + []
» 0
› [] + {}
» "[object Object]"
Run Code Online (Sandbox Code Playgroud)