0
を使用して、それを再割り当てすることはできませんが、コードです:私はグローバル変数を宣言しましたが、ここでは機能
var num = 3
myFunction(num)
function myFunction(aNumber)
{
aNumber = 20
}
console.log(num)
それはまだ「numが3」であると私はなぜ疑問に思ったことを言いましたか?
を使用して、それを再割り当てすることはできませんが、コードです:私はグローバル変数を宣言しましたが、ここでは機能
var num = 3
myFunction(num)
function myFunction(aNumber)
{
aNumber = 20
}
console.log(num)
それはまだ「numが3」であると私はなぜ疑問に思ったことを言いましたか?
グローバル変数を関数に渡して再割り当てする必要はありません。
function myFunction() {
num = 20
}
console.log(num);
真ですが、これは関数が常に 'num'変数を変更したいと仮定しています。元のコードが与えられれば、渡された変数を変更することができます(そのように働いた場合)。 –
JSにはポインタがありません。 'num'の現在の値を受け取った' aNumber'パラメータに '20'を代入しますが、' num'とは無関係です。 –
'myFunction(num)' *は 'num'から値3を読み込み、(変数ではなく)値を' myFunction'に渡します。 'myFunction'はその値をパラメータaNumberで受け取ります。 'aNumber = 20'は' aNumber'に値20を格納します。これは 'num'に何の効果もありません。なぜなら、関数は呼び出しから' num'について何も知らないからです(それは他の手段を経由しますが、 'aNumber'パラメータで行います)。 –
'myFunction'は' num'が定義されているコンテキストに対するクロージャであるため、 'num = 20'を直接行うことによって' myFunction' *は 'num'を更新できます。それが 'num'が定義されている文脈上の閉包でないならば、直接それを更新することはできません。 –