2016-08-15 1 views
11
var obj = { prop = [1,2,3] }; 

上記のコードには、タイプミスが含まれています。=ではなくコロンが必要です。JavaScriptショートカットプロパティとは何ですか?

var obj = { prop = [1,2,3] }; 
      ^^^^^^^^^^^^^^ 
SyntaxError: Invalid shorthand property initializer 

が、私は「JavaScriptの速記プロパティ」を探しますが、この用語は私にはまだ明らかではない。しかし、どのような私はVMのエラーメッセージだった驚かせました。このエラーメッセージの文脈で、「略語プロパティ」とはどういう意味ですか?

+1

'='唯一の変数を割り当てるために使用されている、いないプロパティ... = 'に' '置き換え:' – choz

+4

をそれはOPが彼らの最初の文を与えられたことを知っていることは明らかだ@choz: "上記のコードには誤字が含まれていますが、' = 'の代わりにコロンが必要です。" – Paulpro

+0

@Paulpro前になかったか、まったく見逃してしまった。 – choz

答えて

14

ES6では、このようなものを書くことができる省略名のプロパティ名を使うことができます。あなたのケースで

var s = 'abc'; 
var n = 1; 
var o = { s, n }; // This is equivalent to { s: s, n: n } 

prop = [1,2,3]は、一つ簡略性(上記の例ではsn)として解析され、それは、適切なプロパティ名はなかったです。

3

Firefoxは私の意見でより有用である別のエラーメッセージ、があります。

SyntaxError: missing : after property id 

行方不明:がある、です。あなたが言うように、=の代わりに:を使用する必要があります。

「簡略化プロパティ」は、ES6仕様では意味を持ちません。それはあなたのエラーに気付くのを助けるためにChromeが発明した表現です。彼らは失敗したようだ。

snak's guess

はクロムObjectLiteralに使用IdentifierReference、からなるPropertyDefinitionにを意味することです。明らかにprop = [1,2,3]識別子参照ではないので、それについて文句を言うのは理にかなっています。もっと普通の形式のPropertyDefinitionではなく、PropertyName:AssignmentExpressionであると不平を言うことがさらに合理的になります。またはMethodDefinition

+1

質問には、すでにこれが記載されています。 "上記のコードには、タイプミスがあり、=の代わりにコロンが必要です。問題は、そのような言葉がそのように言われている理由です。 –

+0

@EvanTrimboliはい。あなたは線の間を読んでください。私の答えは、丁寧なやり方で「このような意味のない誤解を招くエラーメッセージを与えるChromeのような愚かなブラウザの使用をやめる」という試みでした。 – Oriol

+2

さて、まだ質問には答えられません。 –

0

MDNの正式な説明がないので、私はこれが何を意味するのかを仮定することができます。

以下を考慮してください。

2つの方法で配列を作成できます。

(一種の)長い道のり:

var cars = new Array("Saab", "Volvo", "BMW"); 

短い方法:

:オブジェクトの作成を扱うとき

var cars = ["Saab", "Volvo", "BMW"]; 

ロングとショートの方法がより明白です遠い道:

var person = new Object(); 
person.firstName = "John"; 
person.lastName = "Doe"; 

短い方法:

var person = {firstName: "John", lastName: "Doe"}; 
関連する問題