見つける事が出来なかったと書かせて頂きました。理解できると思います。値がコピーされて箱に入れられるようなイメージではなく、新しい名前に値が結び付けられるイメージが良いということでしょうね。「値渡し」という言い方をすると、データとしてコピーされて新しいエリアに書かれるようなイメージがあります。Wikipediaの項目を見ても、そのようなイメージで書いてあると思います。仕様の範囲で語るのであれば、そもそもデータが渡っていくという考え方自体が良くないのかもしれないと思いました。値という存在に対する名付けの連鎖と捉えるのが一番素直なのかもしれません。すると、渡すのではなく、むしろ「名前貰い」と言った感じになるのでしょうかね。|1まず、参照渡し、値渡しと分けて考えなくても良いのではないでしょうか。考えると混乱するだけです。「変数自体のアドレス値を扱う指定がない」という特徴があるだけです。オブジェクトを引数として関数が呼び出される時に、実際はオブジェクトを指し示すアドレス値が渡されることになります。変数(入れ物)のアドレス値を渡すような指定はできません。プリミティブ型(文字以外)の場合でも、変数の中身が渡されます。これも変数自体のアドレス値を渡すことになる指定はできません。「変数にオブジェクトが入っている」とは実質オブジェクトを指すアドレス値が入っているとみなせ、関数にオブジェクトを渡すとは、オブジェクトを指すアドレス値を渡すことと言えます。くどいようですが変数を渡すことではありません。渡し」の言葉の意味するところが変わることです。参照渡し、共有渡しなどの言葉は、それぞれのプログラミング言語での記述の概念を理解しやすくするための言い回しと考える程度でよく、世の中には、値しかない、と割り切ったほうが理解がしやすいかと考えます。(共有が参照渡しと違うのは、アドレス値が複製される、ということだけでしょうか、そこがもやもやします。)※文字(string)型はオブジェクトと同じように扱われます。※ここではポインタに相当するものをアドレス値と呼んでいます。いうのは、作成されるReferenceのbaseにbvそのものを格納する→bvをデータとして複製して格納ではなく、その存在そのものを格納→実際は参照(ポインタ)に当たるものが格納されるイメージ、というニュアンスなのでしょうか?原文からは、「複製」や「作成」や「格納」という言葉を読み取れませんでした。使ってメタに書けば以下のような感じで理解できただけです。false})追記:調べたら、関連するものがありました。implementation.まだ、なんかこう、もやもや感がのこる・・・それよりも、ここでは変数がオブジェクトを保持することを、"Name-Binding"とも説明しているのが興味深いですね。変数にオブジェクトを「代入」ではなく「リバインディング」とも言っています。変数名にオブジェクトがバインドされているという概念なんですって。イメージとしては、バインドほうが余計な先入観がなく、説明によいかもしれないと思いました。個の銅バッジつまり、オブジェクトの実態、オブジェクトが扱われる時はデータ列ではなくアドレスということですね。プリミティブ型は文字列以外データ列(+型情報)そのものがコピーされながらやりとりされると。これは実装側に立った考えとして大変納得できます。私が疑問に思っているのは、仕様書にそういった記述がハッキリ書かれている部分が見当たらないことです。仕様書ではそういった区別があるように書かれているように見えません。あるなら、例えば数値型等も含めて全てがアドレスで管理されている、共有渡しであるというイメージ以外に、仕様書の書き方と現実実装とでつじつまが合う解釈は無いのでは無いかと思いました。常識や実装からではなく、仕様書のどこどのように解釈すれば最も確信を持ってJSの参照、値の受け渡し周りの振る舞いについて語れるかを知りたいのです。X」と書かれている時の概念としては、A値としてXと同じ形の実物が複製されて入るのではなく、あくまでXの存在自体が入るのではないかと思いました。a」とした時のaとbは、同じ形のデータというよりむしろ、同じ存在を持っているということになると思います。プリミティブ値はイミュータブルであり、また参照先を書き換えられないJSではどちらで捉えても挙動は変わりませんが、一般に言われているプリミティブ型はオブジェクトと区別されてコピーされていくというイメージではないように思います。いった仕様のイメージを一番簡単な具体的な実装形で説明するのであれば、全てが共有渡しといえるのではないかと思いました。さん、コメントありがとうございます。私は、「共有渡し」の特別な点を考えようとしましたが、もやもやのまま失敗したのでこのような回答になりました。仕様に書かれている事柄は、抽象的な説明のみでしょうから、「~渡し」ということには言及していないのかもしれませんね。実装でどうするかは、実装側に任されていると思いますし、その自由な部分で悩んでいるのではないかという印象を持ちました。10:34仕様に書かれているのは抽象的なことというのはまさにそうだと思います。別のものだとGCについても書かれていませんし、実装する側が考えて工夫すべき点が多いように思います。バインドという概念は大変しっくり来ました。感がずいぶん晴れたような気がします。ありがとうございます。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。