• ベストアンサー

括弧に対して代入している文

前後がどうなっているのかわからないのですが、javascriptでこういう文を見つけました。 abc.xyz(2) = 5; これはどういう意味が考えられるでしょうか。 abcオブジェクトのxyzプロパティだと思いますが、何に対して代入しているのかよくわかりません。 通常括弧は関数やメソッドの呼び出しだと思いますが、返り値が代入できるようなものなんでしょうか。 (念のため[2]ではありません)

質問者が選んだベストアンサー

  • ベストアンサー
  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.3

=演算子の左辺はReference内部型として評価されなければなりません。 (実装が仕様にキッチリ従っていれば)CallExpressionでReference内部型が帰ってくることはないので、必ずReferenceErrorになります。

その他の回答 (4)

  • think49
  • ベストアンサー率59% (285/482)
回答No.5

#2 です。 #3 の指摘を受けまして検証してみたところ、確かに ReferenceError になりましたので #2 は撤回します。 ちゃんと検証しないと駄目ですね…。失礼しました。 http://es5.github.io/#x11.13.1 --- var abc = {xyz: function () {}}; abc,xyz(2) = 5; // ReferenceError: xyz is not defined --- >>b0a0aさん (#3さん) ご指摘ありがとうございました。 # Re: ankodaisukiさん

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.4

もし、Reference内部型を値として扱えるように実装が拡張されているのなら、その限りではありません。 このような振る舞いになるでしょう。 var a = [] var abc = { xyz(i) { var r = a&[i] // Reference{base:a, name:i} return r } } abc.xyz(2) = 5 a[2] // 5

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

前後の文脈が不明なので想像ですが、abc.xyz(2) の評価値が何らかのオブジェクトのプロパティなのでは? 他には代入文にすることで 5 の評価値を得たい状況でしょうか。 # Re: ankodaisukiさん

ankodaisuki
質問者

お礼

みなさん丁寧な回答ありがとうございます。 とても勉強になりました!

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.1

>前後がどうなっているのかわからないのですが、 >javascriptでこういう文を見つけました。 どこで見つけたのですか?前後すら分からないというのであれば 最低限そういう情報を書いたほうがいいですよ。 回答としては ・そもそもJavaScriptではない ・単に文法を書き間違えてしまっただけ のどちらかではないかと思います。

関連するQ&A