1

以下代码在 JavaScript 中完全有效:-

( { a:10 , b:20 , c:30 } );

但是我们什么时候需要这样一个我们不能在我们的代码中引用的对象呢?

4

5 回答 5

4

您经常使用未命名的文字作为函数调用的参数。一个流行的例子是在元素上调用 jQuery 插件方法,例如:

$("div").someMethod({prop:'value',otherProp:'value2'});

也可以(并且通常是有益的)预先将这些对象分配给变量,然后将其传递进来,如下所示:

var options = {prop:'value',otherProp:'value2'};
$("div").someMethod(options);

但有时它只是第一种方式更容易和更清洁。

于 2012-10-04T06:42:35.067 回答
2

( { a:10 , b:20 , c:30 } );没有用,因为您没有对象的引用。但同样的方式我们可以定义匿名函数(function(){ })();这是非常有用的。

于 2012-10-04T06:41:17.753 回答
1

此代码有点“毫无意义”,因为您无法引用它(正如您所说)。

您可以用许多“什么都不做”的语言构建有效的代码。

例如,

function foo() {
    var bar = 42;
}

同样,上述函数完全有效,但作用不大。

于 2012-10-04T06:40:02.767 回答
1

实际上,这可能非常方便。例如,您可以使用该方法完美处理 I18n:

({de: {title: 'foo'}, en: {title: 'bar'}})[navigator.language.slice(0,2)]

所以你可能会得到这样的结果:

var lang = navigator.language.slice(0,2)
var dict = ({de: {title: 'foo'}, en: {title: 'bar'}})[lang]
console.log(dict.title)
于 2012-10-04T06:47:20.480 回答
0

()是分组运算符。[参考]

此表达式返回评估结果。这可能是类型参考。

{a:10, b:20, c:30}['a'];   // invalid
({a:10, b:20, c:30})['a']; // valid. 
Because the object `{a:10, b:20, c:30}` is after being evaluated.
于 2012-10-04T07:02:51.457 回答