インクリメント関数を呼び出した後、グローバル変数が 5 のままなのはなぜですか? 助けてくれてありがとう。
<script>
function increment(val) {
val+=1;
}
var val = 5;
increment(val);
alert(val);
</script>
インクリメント関数を呼び出した後、グローバル変数が 5 のままなのはなぜですか? 助けてくれてありがとう。
<script>
function increment(val) {
val+=1;
}
var val = 5;
increment(val);
alert(val);
</script>
function increment(val) {
val+=1;
}
val
関数に対してローカルな変数を宣言します。外部変数ではなく、ローカル変数を変更します。と同じです
function increment(val2) {
val2+=1;
}
あなたはこれを行うことができます:
function increment(val) {
return val+1;
}
var val=5;
val = increment(val);
また
function increment(holder, varname) {
holder[varname] = holder[varname]+1;
}
var val=5;
increment(window, 'val');
これは、Javascript のプリミティブ変数が参照ではなく値で渡されるためです。
文字列や数値などのプリミティブ型の変数を渡す場合、値は値によって渡されます。これは、関数内でのその変数への変更は、関数の外で発生するものとは完全に分離されていることを意味します
このテーマの詳細については、この素晴らしいブログ エントリを確認してください: http://snook.ca/archives/javascript/javascript_pass
グローバル変数を渡す必要はありません。引数を関数に渡すと、変数のローカル コピーが作成されます。したがって、関数からグローバル変数に影響を与えたい場合は、関数を呼び出すときにそれを渡しません。これは、渡すことなくグローバル変数にアクセスできるためです。
<script>
function increment() {
val+=1;
}
var val = 5;
increment();
alert(val);
increment()
関数を定義するときに、パラメーターを として指定したことに注意してください**val**
。したがって、関数内でのすべての参照val
は、このローカル引数に対するものです。実際のグローバル変数にアクセスする場合は、window.val
.