- ベストアンサー
括弧に対して代入している文
前後がどうなっているのかわからないのですが、javascriptでこういう文を見つけました。 abc.xyz(2) = 5; これはどういう意味が考えられるでしょうか。 abcオブジェクトのxyzプロパティだと思いますが、何に対して代入しているのかよくわかりません。 通常括弧は関数やメソッドの呼び出しだと思いますが、返り値が代入できるようなものなんでしょうか。 (念のため[2]ではありません)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
=演算子の左辺はReference内部型として評価されなければなりません。 (実装が仕様にキッチリ従っていれば)CallExpressionでReference内部型が帰ってくることはないので、必ずReferenceErrorになります。
その他の回答 (4)
- think49
- ベストアンサー率59% (285/482)
#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)
もし、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)
前後の文脈が不明なので想像ですが、abc.xyz(2) の評価値が何らかのオブジェクトのプロパティなのでは? 他には代入文にすることで 5 の評価値を得たい状況でしょうか。 # Re: ankodaisukiさん
- pringlez
- ベストアンサー率36% (598/1630)
>前後がどうなっているのかわからないのですが、 >javascriptでこういう文を見つけました。 どこで見つけたのですか?前後すら分からないというのであれば 最低限そういう情報を書いたほうがいいですよ。 回答としては ・そもそもJavaScriptではない ・単に文法を書き間違えてしまっただけ のどちらかではないかと思います。
お礼
みなさん丁寧な回答ありがとうございます。 とても勉強になりました!