2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【プログラミング】知ってるようで意外と知らない、JavaScriptの参照のしくみ

1 :アザラシ伍長 ◆n3FrWDzmJGlV (埼玉県)@\(^o^)/ [EU]:2017/04/17(月) 23:29:01.42 ID:/yjNCtI00●.net ?PLT(34337)

JavaScriptの参照の仕組み、あなたはきちんと説明できますか?

結論を言えば、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
ばあちゃんが言ってたのは本当だったんだな

4 : ボマイェ(北海道)@\(^o^)/ [US]:2017/04/17(月) 23:31:25.36 ID:u01wQ50X0.net
アクティブスクリプトの激重な思いでIE4ちゃんが固まったゃったよ〜

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「えっ?」

7 : フロントネックロック(神奈川県)@\(^o^)/ [ニダ]:2017/04/17(月) 23:51:27.59 ID:bDz0YIFp0.net
>>4
はよ捨てろやそんなガラクタ。古いPCは使ってるだけで会社の生産性を低下させるぞ。

8 : クロスヒールホールド(静岡県)@\(^o^)/ [US]:2017/04/17(月) 23:55:20.56 ID:JpYqXWEd0.net
10年後くらいにはJavaScruipt直下記禁止になってるわ
今からTypeScript勉強しとけ

9 : ファイナルカット(庭)@\(^o^)/ [US]:2017/04/17(月) 23:59:57.46 ID:cGH7rj/E0.net
C言語は参照渡しが出来ない。
その代わりポインタというのがあるよ。

10 : トペ スイシーダ(catv?)@\(^o^)/ [US]:2017/04/18(火) 00:00:06.45 ID:ngmwRRTX0.net
いっときは死んでた言語だよね
ajaxで急に復活した

11 : ジャンピングパワーボム(関西地方)@\(^o^)/ [US]:2017/04/18(火) 00:00:42.51 ID:ZJU6vTxF0.net
WSHのスクリプト書くときVBSはどーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーしても嫌だったので
ずっとJScriptで作っていました
ありがとうJScript、VBは死んでください

12 : ファイヤーボールスプラッシュ(東京都)@\(^o^)/ [US]:2017/04/18(火) 00:08:31.70 ID:U8agEyho0.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
それは普通わかってるだろ
その上で言語の仕様というか設計思想としてどういう渡し方をするのかって話でしょ

15 : 閃光妖術(東京都)@\(^o^)/ [IT]:2017/04/18(火) 00:33:37.72 ID:CtHV3Vdi0.net
jqueryで適当に書くだけの簡単なお仕事

16 : エルボーバット(中部地方)@\(^o^)/ [US]:2017/04/18(火) 00:35:07.51 ID:cRsLQb8o0.net
配列はコピーして使う
a=[1,2,3]
b=a.slice()

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

17 : 目潰し(熊本県)@\(^o^)/ [US]:2017/04/18(火) 00:54:49.08 ID:WzPfjTXI0.net
ナルポインターエクセプション

18 : ブラディサンデー(東京都)@\(^o^)/ [IN]:2017/04/18(火) 00:58:25.58 ID:B+paKImj0.net
画像置くのはHTML、サイズや位置はCSSとかクソ面倒。
全部javascriptで書ける用にしてほしい。
_x=0みたいな指定ができないってホント欠陥言語よ

19 : 足4の字固め(やわらか銀行)@\(^o^)/ [KR]:2017/04/18(火) 01:00:11.03 ID:J9CI939T0.net
>>15
その職場紹介してくれ

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

21 : チキンウィングフェースロック(catv?)@\(^o^)/ [US]:2017/04/18(火) 01:42:20.79 ID:nIajtqXD0.net
>>17
ガッ

22 : タイガースープレックス(千葉県)@\(^o^)/ [EU]:2017/04/18(火) 01:45:29.36 ID:yquKl16T0.net
netscapeが実装しなければこんな惨状にはならなかった

23 : 中年'sリフト(catv?)@\(^o^)/ [US]:2017/04/18(火) 01:48:57.76 ID:3AJJAv/c0.net
参照はピリリと辛い

24 : ラダームーンサルト(大阪府)@\(^o^)/ [US]:2017/04/18(火) 01:53:56.82 ID:1hQo0MOd0.net
なにを言っているのかサッパリわかんねえ

25 : 閃光妖術(秋田県)@\(^o^)/ [US]:2017/04/18(火) 02:53:01.93 ID:KGstnAu20.net
あきた

26 : ダイビングエルボードロップ(家)@\(^o^)/ [DE]:2017/04/18(火) 03:47:55.67 ID:C9IOIL9i0.net
まさかjavascriptが今の地位に返り咲くとは思わなかった

27 : 河津落とし(家)@\(^o^)/ [PL]:2017/04/18(火) 04:41:48.88 ID:Hi3Dy6GJ0.net
>>18
innerHTMLやcanvasみたいな実装があるんだからなんだってできるじゃん。

28 : アイアンクロー(広西チワン族自治区)@\(^o^)/ [US]:2017/04/18(火) 04:46:09.95 ID:aB9Y6d28O.net
馬鹿なりのサーチ

29 : クロスヒールホールド(やわらか銀行)@\(^o^)/ [DK]:2017/04/18(火) 05:30:17.63 ID:I9G19Rv90.net
一周回って結構好き。Rubyは一周回って結構嫌い

30 : 閃光妖術(秋田県)@\(^o^)/ [US]:2017/04/18(火) 06:30:02.83 ID:KGstnAu20.net
そうだね

31 : 閃光妖術(秋田県)@\(^o^)/ [US]:2017/04/18(火) 07:30:02.75 ID:KGstnAu20.net
まだ終わらんよ

32 : オリンピック予選スラム(秋田県)@\(^o^)/ [US]:2017/04/18(火) 08:30:02.08 ID:of0xwyqz0.net
何それ

33 : ファルコンアロー(新疆ウイグル自治区)@\(^o^)/ [CN]:2017/04/18(火) 09:17:49.77 ID:0TL0cxzl0.net
このレス
$Main->{hayabusa8}->{news}->[1492439341]->[32]
でいーじゃん、いーじゃん

34 : オリンピック予選スラム(秋田県)@\(^o^)/ [US]:2017/04/18(火) 10:17:17.40 ID:of0xwyqz0.net
だめ

35 : ボマイェ(茸)@\(^o^)/ [US]:2017/04/18(火) 11:07:24.17 ID:doZ8TSUp0.net
prototypeが諸悪の根元

36 : フランケンシュタイナー(秋田県)@\(^o^)/ [GB]:2017/04/18(火) 12:07:01.65 ID:1AcGoggC0.net
ぬくぬく

37 : オリンピック予選スラム(秋田県)@\(^o^)/ [US]:2017/04/18(火) 13:07:02.77 ID:of0xwyqz0.net
語ろうよ

38 : マシンガンチョップ(庭)@\(^o^)/ [GB]:2017/04/18(火) 14:01:09.87 ID:Y8yAjFjL0.net
いまやポインタあるほうが珍しい部類だろ

39 : フランケンシュタイナー(秋田県)@\(^o^)/ [GB]:2017/04/18(火) 15:01:02.17 ID:1AcGoggC0.net
そうか

40 : ニールキック(秋田県)@\(^o^)/ [ニダ]:2017/04/18(火) 16:01:01.83 ID:4Xa1m9Ws0.net
しらんがな

41 : メンマ(福岡県)@\(^o^)/ [US]:2017/04/18(火) 16:18:38.17 ID:fA7I2fyg0.net
>>39
顕正会乙

42 : ニーリフト(新疆ウイグル自治区)@\(^o^)/ [US]:2017/04/18(火) 16:21:04.56 ID:c3frzVtP0.net
メモリリーク起こしやすいよね

43 : 河津掛け(チベット自治区)@\(^o^)/ [ニダ]:2017/04/18(火) 16:24:14.88 ID:7AodG2Lm0.net
知ってどうなる

44 : ランサルセ(東京都)@\(^o^)/ [AU]:2017/04/18(火) 16:32:59.62 ID:UehKhOE00.net
ポインタと言えなくなった人の代償行動

45 : メンマ(福岡県)@\(^o^)/ [US]:2017/04/18(火) 16:46:28.92 ID:fA7I2fyg0.net
ぬるぽ

46 : 足4の字固め(dion軍)@\(^o^)/ [ニダ]:2017/04/18(火) 16:47:47.03 ID:4s7hltzy0.net
欠陥言語ですね

47 : 河津掛け(関東・甲信越)@\(^o^)/ [FR]:2017/04/18(火) 16:49:33.34 ID:GUK3iVu+O.net
ぱっと見Cと区別が付かない

48 : 16文キック(東京都)@\(^o^)/ [US]:2017/04/18(火) 17:18:45.38 ID:O9WzT7V00.net
ポインタってどう使ったらいいのか全然分からん
BASICの参照している変数のアドレス返すVARPTR関数というのがあって、マシン語とのデータ橋渡しで使った程度だ

49 : ストレッチプラム(庭)@\(^o^)/ [PL]:2017/04/18(火) 17:55:13.90 ID:6DaETiqH0.net
varからlet、constに移行してすっきりした

50 : 男色ドライバー(神奈川県)@\(^o^)/ [US]:2017/04/18(火) 18:11:38.62 ID:WIzU3lop0.net
型がないのが糞すぎる

51 : フロントネックロック(空)@\(^o^)/ [ニダ]:2017/04/18(火) 21:38:22.75 ID:vKnAFSca0.net
>>49
まだ対応してないブラウザがあって断念したわ
数ヶ月前ダメだったけど今は行けるのかな

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

53 : 河津掛け(家)@\(^o^)/ [US]:2017/04/18(火) 21:43:57.10 ID:WBNWvGrr0.net
GOTO

54 : トラースキック(滋賀県)@\(^o^)/ [CN]:2017/04/18(火) 21:45:42.18 ID:rA/OEm3M0.net
知らないでソースコードコピペしてやっているやつがおるw

55 : チェーン攻撃(catv?)@\(^o^)/ [FR]:2017/04/19(水) 06:32:07.93 ID:V1AK5HX10.net
すべてのブラウザでVBScriptが動けば解決

56 : ナガタロックII(山口県)@\(^o^)/ [US]:2017/04/19(水) 09:58:53.39 ID:6ZUgcPrl0.net
>>1
その記事は大間違い
JSはすべて参照の値渡し、もしくは共有渡し、もしくは名付けの連鎖
そもそも「渡され方」は「渡し方」によって変わるもので、
「渡される物」によって変わるわけがない
JSでは「渡し方」は一通り、よって「渡され方」も一通り

57 : バーニングハンマー(茸)@\(^o^)/ [ZA]:2017/04/19(水) 10:34:26.00 ID:wfECzJQI0.net
いま作ってる機能が参照私ばかりしててさーせん

総レス数 57
12 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★