[解決済み] JavaScriptは参照渡しですか?[重複あり]
2022-03-21 05:33:23
質問
JavaScriptは参照渡しなのか、値渡しなのか?
の例です。
JavaScriptです。良いところ
. について非常に混乱しています。
my
矩形関数のパラメータです。実際は
undefined
で、関数内部で再定義されます。元の参照はありません。もし私が関数のパラメータからそれを取り除くと、領域内の関数はそれにアクセスすることができません。
クロージャなのでしょうか?しかし、関数は返されない。
var shape = function (config) {
var that = {};
that.name = config.name || "";
that.area = function () {
return 0;
};
return that;
};
var rectangle = function (config, my) {
my = my || {};
my.l = config.length || 1;
my.w = config.width || 1;
var that = shape(config);
that.area = function () {
return my.l * my.w;
};
return that;
};
myShape = shape({
name: "Unhnown"
});
myRec = rectangle({
name: "Rectangle",
length: 4,
width: 6
});
console.log(myShape.name + " area is " + myShape.area() + " " + myRec.name + " area is " + myRec.area());
解決方法は?
プリミティブは値渡し、オブジェクトは"参照のコピー"で渡されます。
具体的には、オブジェクト(または配列)を渡すと、そのオブジェクトへの参照を(見えないように)渡していることになります。 内容 しかし、参照を上書きしようとしても、呼び出し元が保持する参照のコピーには影響しません - つまり、参照自体は値で渡されます。
function replace(ref) {
ref = {}; // this code does _not_ affect the object passed
}
function update(ref) {
ref.key = 'newvalue'; // this code _does_ affect the _contents_ of the object
}
var a = { key: 'value' };
replace(a); // a still has its original value - it's unmodfied
update(a); // the _contents_ of 'a' are changed
関連
-
jQueryのコピーオブジェクトの説明
-
Vueでルートネスティングを実装する例
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
jsを使った簡単な照明スイッチのコード
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
Vueにシンプルなメモ帳機能を実装
-
vueのグローバルがscss(mixin)を導入。
-
Vueのクラススタイルの使い方の詳細
-
Vueでルートネスティングを実装する例
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】ExpressJS - throw er Unhandled errorイベント
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?