可以在任何函数声明中定义对象文字还是仅在窗口对象中定义?
function declaration()
{
var objectLiteral = {
property1: "test1",
method1: function() {
return "testMethod"
}
}
}
答案 0 :(得分:2)
可以在任何地方定义对象文字 - 但它们受JavaScript的范围限制。
JavaScript范围内容 - 意味着您在范围内声明的任何内容都只能在该范围内访问。
关于JS的有趣之处在于函数是一等公民,这意味着函数就像对象或全局(窗口对象)空间一样拥有自己的上下文。本质上意味着您可以在其他函数中声明函数。
您在一个上下文中定义的任何内容都可用于您创建的任何子上下文。这是一个例子:
var x = {count: 0};
function doSomething() {
console.log(x.count); // 0
var y = {name: "bologna"};
function printY() {
console.log(y.name); // "bologna"
var z = 1000;
}
console.log(z); // undefined
}
console.log(y); // undefined
这非常简化,并且JS中的范围可能会非常复杂。要更深入地了解JavaScript如何管理范围界定,请查看我在该主题上撰写的this article,或者这篇优秀的Sitepoint Article