私はjavascriptを学んでおり、学習のためにjqueryフレームワークを使用しています...このサンプルを使用してこんにちはの代わりにさようならを警告する方法を誰かに説明してもらえますか
より良い質問は、関数の変更で var msg を変更する方法です
var msg = 'hello';
function change() {
msg = 'byebye';
}
alert(msg);
私はjavascriptを学んでおり、学習のためにjqueryフレームワークを使用しています...このサンプルを使用してこんにちはの代わりにさようならを警告する方法を誰かに説明してもらえますか
より良い質問は、関数の変更で var msg を変更する方法です
var msg = 'hello';
function change() {
msg = 'byebye';
}
alert(msg);
change()
が の前に呼び出された場合alert()
、期待どおりの結果が得られます。
たとえば、これを試してください:
var msg = 'hello';
function change() {
msg = 'byebye';
}
change();
alert(msg);
あなたはこれを行うことができます:
var msg = 'hello';
function change() {
msg = 'byebye';
return msg;
}
alert(change());
var msg = 'hello';
function change() {
msg = 'byebye';
}
change();
alert(msg);
最初に変更関数を呼び出す必要があります。
msg
これは window オブジェクトのスコープ内にあります..
また、change()
関数を呼び出していません
したがって、正しく印刷されます"hello"
アラートの前に関数を呼び出すと、期待したものが表示されます..
change();
alert(msg);
ある意味で、あなたはこれを正しく行いました。最初に設定したのはグローバル変数
var msg = 'hello';
次に、その変数へのスコープを持つ関数を定義しました
function change(){
msg = 'byebye';
}
そして、あなたはテストしました:
alert(msg);
ただし、関数を呼び出したことはありません。関数を定義するときは、コードを実行するために次のように呼び出す必要があります。
change();
alert(msg);
関数のヒント
クロージャーを使用する
この状況のベスト プラクティスを見たい場合は、グローバル名前空間を使用しないことをお勧めします。いわゆるクロージャーでそれを行うことができます。基本的に、関数のローカル スコープをコードにラップします。このスコープ内の子関数はスコープを共有します。
(function(){
var msg = 'hello';
function change(){
msg = 'byebye';
}
change();
alert(msg);
})();//Wrapping the function in () and then using () on it will cause it to run the code without being called
これにより、グローバル名前空間がそのままになるだけでなく、クロージャ内の変数 (コードをラップした関数) に割り当てられたメモリを、クロージャのコードの実行が完了するとスコープ外になるため、より高速に収集できるようになります。
function change
クロージャで が宣言されているため、グローバル スコープではアクセスできないことに注意してください。グローバルスコープで利用できるようにしたい場合、この方法でそれを行うことはあまり意味がありません.
関数が引数によって変更を渡すことができるようにする
関数の領域の内側は()
、引数を渡すことができる場所です。javascript では、それらの型は動的です。Usingは、関数内で変数function change(newMessage)
を使用できることを意味します。newMessage
暗黙的にローカルにスコープされます。change('byebye');
これにより、次のように新しいメッセージを渡すことで、あらゆる種類の異なるメッセージが可能になります。
(function(){
var msg = 'hello';
function change(newMessage){
msg = newMessage;
}
change('byebye');
alert(msg);
})();
change()
関数を呼び出すために使用します。
change();
これにより、変数の値が変更されます。これで、新しい値をアラートできます:
alert( msg ); // "byebye"