0

私は常にすべての変数の前に var キーワードを置きます。その正しさが気になります。コードは機能していますが、これは良い習慣ですか?

$(document).ready(function() {
    var something = 34;
    var v = $(body).find('p.lol');
    $.ajax({
        success: function(a) {
           var k = a.sdf;
           something = k+0.7;
           ...etc...
4

5 に答える 5

3

実際、それはコーディングの練習に関するものではありません。var キーワードを使用して関数で変数を定義する場合。それ以外の場合、変数はグローバルに定義され、関数の外部でアクセスできます。

function test(){
 var message = “hi”; //local variable
 variable = "bye";
}
 test();
 alert(message); //undefined
 alert(variable);//bye
于 2013-01-25T10:50:41.290 に答える
1

varローカル変数の定義に使用します。省略した場合、変数はグローバルになるか、誤って別の変数の値を上書きする可能性があります。

同様の質問があります。

于 2013-01-25T10:48:11.067 に答える
1

はい。厳密モードで使用すると、エラーがスローされます。それを試してみてください:

(function(){
    "use strict";
    try{
        myNum = 0;
    }
    catch(e) {
        alert("Error: " + e);
    }
})();

このコードは次のようなものを返します。

エラー: ReferenceError: 宣言されていない変数 myNum への代入

より詳しい情報:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/Strict_mode

http://msdn.microsoft.com/en-us/library/ie/br230269%28v=vs.94%29.aspx

http://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javascript-strict-mode/

于 2013-01-25T13:41:23.287 に答える
1

(誤ってグローバル オブジェクトを汚染することを避けるため) 常に変数を宣言することをお勧めしますが、JavaScript にはホイストと呼ばれるものがあります。

基本的に、これは変数が常に関数にスコープされることを意味します (つまり、他の言語のようにループや他のステートメント ブロック内ではありません)。そのため、各関数の開始時にすべての宣言を行うことをお勧めします。

于 2013-01-25T10:49:23.943 に答える
0

スコープを明確に定義することは、良い習慣です。var キーワードを使用しないと、効果的にグローバル変数が作成されます。そのインスタンスのファイルの先頭で自動的に宣言された変数 between を想像してみてください。

これにより、ローカル変数が作成されます。

var someVarA = 23;
var someVarB = 25;

これにより、グローバル変数が自動的に作成されます (他の場所で宣言されていない場合)。

someVarA = 23;
someVarB = 25;

ただし、これは各変数の前に var を配置するのと同じです (カンマに注意してください)。

var someVarA = 23,
    someVarB = 25;
于 2013-01-25T10:48:56.417 に答える