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

总是声明你的变量是一个好习惯(以避免意外污染全局对象),但是 JavaScript 有一个叫做提升的东西。

基本上,这意味着变量总是限定在函数的范围内(即不像其他语言那样在循环或其他语句块内),因此在每个函数的开头进行所有声明是一个好习惯。

于 2013-01-25T10:49:23.943 回答
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 回答
0

明确定义范围是一种很好的做法。当您不使用 var 关键字时,您实际上是在创建一个全局变量。想象一下在该实例中自动声明在文件顶部之间的变量。

这将创建局部变量:

var someVarA = 23;
var someVarB = 25;

这会自动创建全局变量(如果未在其他地方声明):

someVarA = 23;
someVarB = 25;

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

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