2

http://js2coffee.orgを使用して CoffeeScript コードを JavaScript に変換しました

ResetControls = ->
  $("#menu_item_url").val ""
  $("#menu_item_name").val ""
  $("#resource_id").prop "selectedIndex", 0
  $("#resource_type_id").prop "selectedIndex", 0

それは次のように変換されました:

var ResetControls;

ResetControls = function() {
  $("#menu_item_url").val("");
  $("#menu_item_name").val("");
  $("#resource_id").prop("selectedIndex", 0);
  return $("#resource_type_id").prop("selectedIndex", 0);
};

変換された JavaScript コードの最初の行は、関数を変数に割り当てるときに、変数名の前に var キーワードを配置するのが何らかのベスト プラクティスであることを示しています。そうですか?どのように?

私の理解でvarは、再帰関数内で変数のコピーを作成することを意図している再帰呼び出しで便利です(そうしないと、再帰呼び出し間で変数が共有されるか、静的のままになります)。

の他の意味はありvarますか?

4

2 に答える 2

5

はい、var変数名の前に置く必要があります。このようにして、現在のスコープで変数を宣言しています。そうしないと、JS は外側のスコープで変数を検索し、どのスコープでも宣言されていない場合はグローバルにします。私の知る限り、モードでは、グローバル変数でさえグローバル空間でstrict宣言する必要があります。var

PSこれは、関数を割り当てる変数だけでなく、すべての変数に有効です

于 2013-05-29T11:27:38.257 に答える
1

もう 1 つの理由はガベージ コレクションです。var キーワードを指定せずに作成された変数は、グローバル スコープで作成され、ガベージ コレクションの対象とならないため、メモリ リークが発生する可能性があります。

于 2013-05-29T12:39:37.087 に答える