在Javascript中初始化变量的良好实践?
我有一位同事,他用空字符串作为默认值实例化了所有变量。稍后,该变量可能会被分配一个数组或对象,尽管这可能是已知的,但他仍然将空字符串指定为默认值。前在Javascript中初始化变量的良好实践?,javascript,variables,Javascript,Variables,我有一位同事,他用空字符串作为默认值实例化了所有变量。稍后,该变量可能会被分配一个数组或对象,尽管这可能是已知的,但他仍然将空字符串指定为默认值。前 function getAllCars(){ var listOfCars = ['bmw','fiat','reno']; return listOfCars; } function getAnyCar(){ var cars = ""; cars = getAllCars(); var car = cars.slice(0
function getAllCars(){
var listOfCars = ['bmw','fiat','reno'];
return listOfCars;
}
function getAnyCar(){
var cars = "";
cars = getAllCars();
var car = cars.slice(0,1);
return car;
}
TL;博士:
定义汽车的良好实践应该是什么
var汽车代码>
var cars=[]代码>
var-cars=”“代码>
我试图向他解释,如果你知道变量cars
将用于保存一个数组,你应该用一个空数组来定义它
他认为他知道变量100%将被分配一个数组,即cars=getAllCars()代码>所以没关系。在一个小函数中,这样的事情可能是可见的,但我认为这是一种糟糕的做法。将空字符串定义为默认值是一种非常糟糕的做法。我会用
var cars = getAllCars();
将空字符串定义为默认值是一种非常糟糕的做法。我会用
var cars = getAllCars();
让变量经常将其类型更改为不相关的类型确实是一种不好的做法。Javascript已经有两个非常好的值来表示“无值”:undefined
和null
。您对差异的理解主要取决于您,但两者都比空字符串更合适。最自然的方式是默认的未定义的:
var cars;
这会在作用域中保留变量名,但不会为其赋值。这是表达此代码实际执行操作的最清晰的方式。让变量经常将其类型更改为不相关的类型确实是一种不好的做法。Javascript已经有两个非常好的值来表示“无值”:undefined
和null
。您对差异的理解主要取决于您,但两者都比空字符串更合适。最自然的方式是默认的未定义的:
var cars;
这会在作用域中保留变量名,但不会为其赋值。这是表达这段代码实际作用的最清晰的方式。JS是动态类型的,允许在运行时更改类型,但这会使代码混乱
根据良好实践(如果不是最佳实践),建议在声明变量时初始化它。这提供了更清晰的代码(清楚地指示cars是一个数组),并避免了未定义的值
var cars = [];
另一方面,一些开发人员更喜欢声明,直到必要时才初始化。所以这也很好
var cars;
我认为这两者中的哪一个是意见的问题,或者是选择的问题。但可以肯定的是,在您的示例中初始化var cars=“
毫无意义。JS是动态类型的,允许在运行时更改类型,但这会让您的代码变得混乱
根据良好实践(如果不是最佳实践),建议在声明变量时初始化它。这提供了更清晰的代码(清楚地指示cars是一个数组),并避免了未定义的值
var cars = [];
另一方面,一些开发人员更喜欢声明,直到必要时才初始化。所以这也很好
var cars;
我认为这两者中的哪一个是意见的问题,或者是选择的问题。但可以肯定的是,在您的示例中初始化var cars=”“
毫无意义。更好的做法是在代码中永远不要有未初始化的对象,通常是const cars=getAllCars()
。处理不洁状态是一项艰巨的任务。不过这是主观的。@BenjaminGruenbaum谢谢你链接的谈话。看起来很有趣。将保存它以供以后查看。更好的做法是在代码中永远不要有未初始化的对象,通常是const cars=getAllCars()
。处理不洁状态是一项艰巨的任务。不过这是主观的。@BenjaminGruenbaum谢谢你链接的谈话。看起来很有趣。将保存它以便以后观看。