問題タブ [pass-by-value]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
10 に答える
43665 参照

c# - C#での参照型変数の「ref」の使用は何ですか?

値の型 ( 、 など) をパラメーターとして (キーワードなしで) 渡すと、その変数のコピーがメソッドに渡されることを理解してintstructますrefが、refキーワードを使用すると、その変数への参照が渡されます。新しいものではありません。

しかし、クラスのような参照型では、refキーワードがなくても、コピーではなく参照がメソッドに渡されます。refでは、参照型でのキーワードの使用は何ですか?


たとえば、次のとおりです。

次の違いは何ですか?

0 投票する
2 に答える
5827 参照

vb6 - Visual Basic 6.0 の値渡しリファレンスの違い

i次のコードでは、 がバリアントとして扱われるため、コンパイル時エラーが発生します。エラー: 「ByRef 引数の型が一致しません。」

しかし、パラメータを渡すと、ByValなぜエラーが発生しないのですか?

0 投票する
4 に答える
23111 参照

javascript - 変数を値で匿名のJavaScript関数に渡す方法は?

目的

サイト全体のページのいくつかのdivにイベントハンドラーを動的に割り当てたい。

私の方法

jQueryを使用して、選択したdivイベントのハンドラーとして無名関数をバインドしています。

問題

このコードは、div名と関連するURLの配列を繰り返します。div名は、バインディングターゲットを設定するために使用されます。つまり、このイベントハンドラーをこのdivイベントにアタッチします。

イベントハンドラーは各divイベントに正常にバインドされますが、これらのイベントハンドラーによってトリガーされるアクションは、配列の最後のアイテムのみを対象とします。

つまり、ユーザーが特定のdivにマウスを合わせると、そのdivのスライドアウトアニメーションを実行する必要があるという考え方です。ただし、代わりに、div1(rangeTabAll)にマウスを合わせると、div4(rangeTabThm)のスライドアウトアニメーションがトリガーされます。同じことがdiv2、3などにも当てはまります。順序は重要ではありません。配列要素を変更すると、イベントは常に配列の最後の要素div4をターゲットにします。

私のコード-(jQueryを使用)

私の理論

目がくらむほど明白な構文エラーまたは参照渡しの問題が発生していません。最初に、curTabの値を設定するために次のステートメントがありました。

したがって、問題が発生したとき、(forループの反復を介して)curTabへの参照を変更すると、実際には、以前のすべての無名関数イベントハンドラーの参照も新しいcurTab値に変更されていることがわかりました。イベントハンドラーは常に最後のdivをターゲットにしました。

したがって、私が本当に行う必要があるのは、curTabオブジェクト参照ではなく無名関数イベントハンドラーにcurTab値を渡すことでした。

ので、私は考えました:

問題は解決しますが、解決しません。同じ取引。したがって、問題に関するいくつかの重要な、そしておそらく非常に基本的な知識が欠けていることは明らかです。ありがとう。

0 投票する
4 に答える
6757 参照

python - Pythonのブール値は値渡しですか?

bool オブジェクトへの参照を送信し、メソッド内でそれを変更しました。メソッドの実行が終了した後、メソッドの外側の bool の値は変更されませんでした。

これにより、Python の bool は値渡しであると思われます。本当?そのように動作する他の Python 型は?

0 投票する
1 に答える
366 参照

r - ネストされた関数での複雑なオブジェクト初期化スコープの問題

わかりました。S4 クラスを使用して非常に複雑なオブジェクトを構築しようとしています。スロットには、半ダースのマトリックス、いくつかのリスト、およびおそらくキッチン シンクが 1 つまたは 2 つ含まれています。オブジェクトは、定義済みの構成オブジェクトを参照して展開することで初期化されます。setClass() でクラスを定義するのは簡単ですが、setMethod("initialize") でスロットを設定する洗練された方法を見つけるのに苦労しています。

問題は、その構成オブジェクトの一部に基づいて、これらの半ダースの行列の特定の要素を設定する必要があることです。構成オブジェクトの各要素に対して、いくつかのマトリックスの特定の要素を設定する必要がある場合があります。行列は初期化関数のスコープ/環境にあることに注意してください。次に、行列への実際の割り当てを行う初期化関数内にネストされた関数があります。とにかくそれがアイデアです。これらの関数はもちろん行列を見ることができますが、変更することはできません元の変数が現在の環境で定義されていない場合、<- 演算子によって新しい行列が作成されるためです。R は値渡しであり、それを意味します。これは、初期化しようとしている .Object のスロットにも当てはまります。したがって、ネストされた関数を使用して初期化を行うことはできません。

残念ながら、これらのネストされた関数はいくつかの行列を変更する必要があるため、メインの初期化関数で値を返したり代入を行ったりすることは実用的でもエレガントでもありません。(ただし、行列のコピーを返されたリストに詰め込んでから、それらをメインの初期化関数に結合した場合は可能です。ただし、醜いので、多くの追加コードが必要になります。)

また、構成オブジェクトの階層的な性質のため、再帰呼び出しでトラバースする必要があるため、反復 (このスコーピングの問題を防ぐ) もあまり実用的ではありません。

私が考えることができる最後のオプションは、割り当てを強制的に非ローカル変数に適用するために、envir オプションを指定して assign() 関数を使用することです。しかし、goto ステートメントのように、そのような環境を使用するのは面倒に思えます...

では、最も海賊的なアプローチは何ですか? 冗長な行列を非効率的に渡すためだけに、純粋な関数型プログラミングに固執し、醜いデータ構造を構築しますか? 関数を完全に回避する反復的な解決策を見つけてみませんか? 環境をいじって深い魔法を使う?

0 投票する
4 に答える
621 参照

.net - ふりをする.NET文字列は値型です

.NETでは、文字列は不変であり、参照型変数です。これは、動作が原因で値型オブジェクトと間違える可能性のある新しい.NET開発者にとっては驚きとなることがよくあります。StringBuilderただし、特に長い連結に使用する方法以外は。ループの中で、この区別を知る必要がある実際の理由はありますか?

.NET文字列に関する値参照の違いを理解することと、値型であると偽ったり誤解したりすることによって、どのような現実のシナリオが助けられたり回避されたりしますか?

0 投票する
8 に答える
53270 参照

java - Javaで整数ラッパーを比較するときに128==128が偽であるのに、127 == 127が真であるのはなぜですか?

出力:


出力:

注:-128から127までの数値は真です。

0 投票する
6 に答える
7557 参照

c++ - 値パラメーターの定数の正確さ

関数の宣言とその定義が値パラメーターについて合意する必要がないと述べられている場合、定数の正当性についての質問はほとんどないことを私は知っています。これは、値パラメーターの定数が関数内でのみ重要であるためです。これは問題ありません:

これを行うことは本当にベストプラクティスですか?私は誰もそれをするのを見たことがないからです。私はこれが議論された他の場所でこの引用(出典がわからない)を見ました:

「実際、コンパイラーにとって、値パラメーターの前にこのconstを含めるかどうかに関係なく、関数のシグニチャーは同じです。」

「関数宣言でconstの値渡しパラメーターを使用しないでください。変更しない場合は、同じ関数の定義でパラメーターconstを作成してください。」

2番目の段落は、宣言にconstを含めないことを示しています。これは、値パラメーターの定数がインターフェース定義の一部として無意味であるためだと思います。実装の詳細です。

この推奨事項に基づいて、ポインターパラメーターのポインター値にも推奨されますか?(参照を再割り当てできないため、参照パラメーターでは意味がありません。)

要約:値パラメーターの作成は、いくつかの論理エラーをキャッチするのに役立ちます。それはベストプラクティスですか?constをヘッダーファイルから除外するという極端なことをしますか?ポインタ値を設定することも同様に役立ちますか?なぜまたはなぜそうではないのですか?

いくつかの参考文献:

C ++ constキーワード-自由に使用しますか? 関数パラメーターに「const」を使用する

constvalueパラメーターが役立つ場合の例:

0 投票する
4 に答える
3746 参照

c# - DataGridView:値渡しまたは参照?

DataGridViewはメモリを大量に消費していると思います。datagridviewを値で渡すか、参照で渡す方がよいでしょうか。それも通過する必要がありますか?