JavaScriptにはポインターがなく、参照の方式は私たちが知っているほかの主要なプログラミング言語とは異なるという。

JavaScriptでは、ある変数が別の変数を参照すること(参照渡し)には対応していません。そしてオブジェクトや配列のような複合型のものだけが「参照渡し」を使います。

この記事では以下の用語を使用します。

・スカラー(基本型):1つの値もしくはデータ型(整数、論理値、文字列など)
・複合型:複数の値から成るもの(配列、オブジェクトなど)
・プリミティブ:ほかの場所の値を参照しているだけのもの(参照型)と区別するため、実際に値を保有しているものをプリミティブとする

JavaScriptのスカラーはプリミティブですが、Rubyなどほかの言語では参照型のスカラーになっています。JavaScriptではプリミティブなスカラーはイミュータブル(immutable)ですが、複合型データはミュータブル(mutable)です。

(以下ソース)
https://www.webprofessional.jp/how-javascript-references-work/


スポンサードリンク
2: フランケンシュタイナー(catv?)@\(^o^)/ [JP] 2017/04/17(月) 23:30:23.03 ID:F4dY4OVs0.net

>>1
参照言いたいだけやろ!


3: TEKKAMAKI(青森県)@\(^o^)/ [BH] 2017/04/17(月) 23:30:39.23 ID:TFXvOcpv0.net

ばあちゃんが言ってたのは本当だったんだな


5: バーニングハンマー(庭)@\(^o^)/ [US] 2017/04/17(月) 23:32:42.91 ID:yt1KQTMA0.net

言語仕様がクソなだけ


6: 閃光妖術(SB-iPhone)@\(^o^)/ [ニダ] 2017/04/17(月) 23:35:55.74 ID:CjYpa5Id0.net

jQuery「えっ?」


10: トペ スイシーダ(catv?)@\(^o^)/ [US] 2017/04/18(火) 00:00:06.45 ID:ngmwRRTX0.net

いっときは死んでた言語だよね
ajaxで急に復活した


26: ダイビングエルボードロップ(家)@\(^o^)/ [DE] 2017/04/18(火) 03:47:55.67 ID:C9IOIL9i0.net

まさかjavascriptが今の地位に返り咲くとは思わなかった


11: ジャンピングパワーボム(関西地方)@\(^o^)/ [US] 2017/04/18(火) 00:00:42.51 ID:ZJU6vTxF0.net

WSHのスクリプト書くときVBSはどーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーしても嫌だったので
ずっとJScriptで作っていました
ありがとうJScript、VBは死んでください


18: ブラディサンデー(東京都)@\(^o^)/ [IN] 2017/04/18(火) 00:58:25.58 ID:B+paKImj0.net

画像置くのはHTML、サイズや位置はCSSとかクソ面倒。
全部javascriptで書ける用にしてほしい。
_x=0みたいな指定ができないってホント欠陥言語よ


16: エルボーバット(中部地方)@\(^o^)/ [US] 2017/04/18(火) 00:35:07.51 ID:cRsLQb8o0.net

配列はコピーして使う
a=[1,2,3]
b=a.slice()

難しく書いて誰向けに説明しているのかw


20: マシンガンチョップ(北海道)@\(^o^)/ [US] 2017/04/18(火) 01:27:20.72 ID:mgBtP2/E0.net

>>16
A[0]++;


24: ラダームーンサルト(大阪府)@\(^o^)/ [US] 2017/04/18(火) 01:53:56.82 ID:1hQo0MOd0.net

なにを言っているのかサッパリわかんねえ


12: ファイヤーボールスプラッシュ(東京都)@\(^o^)/ [US] 2017/04/18(火) 00:08:31.70 ID:U8agEyho0.net

C++のトラウマから生まれた言語の大半は
参照型と現物を(わざと)混乱させる仕様にしていると思う


9: ファイナルカット(庭)@\(^o^)/ [US] 2017/04/17(月) 23:59:57.46 ID:cGH7rj/E0.net

C言語は参照渡しが出来ない。
その代わりポインタというのがあるよ。


13: ニールキック(東京都)@\(^o^)/ [US] 2017/04/18(火) 00:20:06.46 ID:MZC4jN0j0.net

参照渡しとかポインタがどうのとか言ってるやつはただのアホ
純粋に変数は値とアドレスのペアと覚えるだけですべて解決する


14: フルネルソンスープレックス(catv?)@\(^o^)/ [JP] 2017/04/18(火) 00:26:16.03 ID:x4en/nQq0.net

>>13
それは普通わかってるだろ
その上で言語の仕様というか設計思想としてどういう渡し方をするのかって話でしょ


38: マシンガンチョップ(庭)@\(^o^)/ [GB] 2017/04/18(火) 14:01:09.87 ID:Y8yAjFjL0.net

いまやポインタあるほうが珍しい部類だろ


42: ニーリフト(新疆ウイグル自治区)@\(^o^)/ [US] 2017/04/18(火) 16:21:04.56 ID:c3frzVtP0.net

メモリリーク起こしやすいよね


44: ランサルセ(東京都)@\(^o^)/ [AU] 2017/04/18(火) 16:32:59.62 ID:UehKhOE00.net

ポインタと言えなくなった人の代償行動


56: ナガタロックII(山口県)@\(^o^)/ [US] 2017/04/19(水) 09:58:53.39 ID:6ZUgcPrl0.net

>>1
その記事は大間違い
JSはすべて参照の値渡し、もしくは共有渡し、もしくは名付けの連鎖
そもそも「渡され方」は「渡し方」によって変わるもので、
「渡される物」によって変わるわけがない
JSでは「渡し方」は一通り、よって「渡され方」も一通り


52: バックドロップホールド(catv?)@\(^o^)/ [US] 2017/04/18(火) 21:41:17.97 ID:77aVdZOx0.net

JavaScriptは言語仕様がクソ


50: 男色ドライバー(神奈川県)@\(^o^)/ [US] 2017/04/18(火) 18:11:38.62 ID:WIzU3lop0.net

型がないのが糞すぎる


49: ストレッチプラム(庭)@\(^o^)/ [PL] 2017/04/18(火) 17:55:13.90 ID:6DaETiqH0.net

varからlet、constに移行してすっきりした


51: フロントネックロック(空)@\(^o^)/ [ニダ] 2017/04/18(火) 21:38:22.75 ID:vKnAFSca0.net

>>49
まだ対応してないブラウザがあって断念したわ
数ヶ月前ダメだったけど今は行けるのかな


29: クロスヒールホールド(やわらか銀行)@\(^o^)/ [DK] 2017/04/18(火) 05:30:17.63 ID:I9G19Rv90.net

一周回って結構好き。Rubyは一周回って結構嫌い


57: バーニングハンマー(茸)@\(^o^)/ [ZA] 2017/04/19(水) 10:34:26.00 ID:wfECzJQI0.net

いま作ってる機能が参照私ばかりしててさーせん


元スレ: http://hayabusa3.2ch.sc/test/read.cgi/news/1492439341/