在Javascript中每个定义的变量之前放置“var”关键字是一个好习惯吗?

时间:2013-01-25 10:45:28

标签: javascript variables syntax

我总是在每个变量之前放置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...

5 个答案:

答案 0 :(得分:3)

实际上,它与编码实践无关。如果使用函数在函数中定义变量 var关键字。它本地定义,否则变量将全局定义,您可以在函数外部访问。

function test(){
 var message = “hi”; //local variable
 variable = "bye";
}
 test();
 alert(message); //undefined
 alert(variable);//bye

答案 1 :(得分:1)

使用var定义局部变量。如果省略,变量将是全局的,或者您可能会意外地覆盖另一个变量的值。

这是similar question

答案 2 :(得分:1)

总是声明变量(以避免意外污染全局对象)是一种很好的做法,但JavaScript有一些名为hoisting的东西。

基本上,它意味着变量总是作用于函数(即不在循环或其他语句块中,就像其他语言一样),因此在每个函数的开头执行所有声明是一种很好的做法。

答案 3 :(得分: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/

答案 4 :(得分:0)

这是一个很好的做法,因为你明确定义范围。如果不使用var关键字,则实际上是在创建全局变量。想象一下,在该实例中文件顶部自动声明的变量。

这会创建局部变量:

var someVarA = 23;
var someVarB = 25;

这会自动创建全局变量(如果未在别处声明):

someVarA = 23;
someVarB = 25;

然而,这与在每个变量前面放置var(注意逗号)相同:

var someVarA = 23,
    someVarB = 25;