我总是在每个变量之前放置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...
答案 0 :(得分:3)
实际上,它与编码实践无关。如果使用函数在函数中定义变量 var关键字。它本地定义,否则变量将全局定义,您可以在函数外部访问。
function test(){
var message = “hi”; //local variable
variable = "bye";
}
test();
alert(message); //undefined
alert(variable);//bye
答案 1 :(得分:1)
使用var
定义局部变量。如果省略,变量将是全局的,或者您可能会意外地覆盖另一个变量的值。
答案 2 :(得分:1)
总是声明变量(以避免意外污染全局对象)是一种很好的做法,但JavaScript有一些名为hoisting的东西。
基本上,它意味着变量总是作用于函数(即不在循环或其他语句块中,就像其他语言一样),因此在每个函数的开头执行所有声明是一种很好的做法。
答案 3 :(得分:1)
是。如果在严格模式下使用它,将抛出错误。试试吧:
(function(){
"use strict";
try{
myNum = 0;
}
catch(e) {
alert("Error: " + e);
}
})();
此代码将返回如下内容:
错误:ReferenceError:分配给未声明的变量myNum
更多信息:
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;