以下代码在JavaScript中完全有效: -
( { a:10 , b:20 , c:30 } );
但是我们何时需要这样一个我们无法在代码中引用的对象?
答案 0 :(得分:3)
您经常使用未命名的文字作为函数调用的参数。一个流行的例子是在元素上调用jQuery插件方法,例如:
$("div").someMethod({prop:'value',otherProp:'value2'});
预先将这些对象分配给变量然后传入它也是可能的(通常是有益的),如下所示:
var options = {prop:'value',otherProp:'value2'};
$("div").someMethod(options);
但有时它的第一种方式更简单,更清洁。
答案 1 :(得分:1)
这段代码有点'毫无意义',因为你无法引用它(如你所说)。
您可以使用“无所事事”的多种语言构建有效代码。
例如,
function foo() {
var bar = 42;
}
同样,上述功能完全有效,但做得不多。
答案 2 :(得分:1)
( { a:10 , b:20 , c:30 } );
没有用,因为你没有对象的引用。但同样的方法我们可以定义匿名函数(function(){ })()
;这非常有用。
答案 3 :(得分: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)
答案 4 :(得分:0)
()
是分组运算符。
[reference]
此表达式返回评估结果。 这可能是类型参考。
{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.