我有一位同事用空字符串实例化他的所有变量作为默认值。该变量稍后可以为其分配一个数组或对象,尽管可能知道他仍然将空字符串指定为默认值。实施例
function getAllCars(){
var listOfCars = ['bmw','fiat','reno'];
return listOfCars;
}
function getAnyCar(){
var cars = "";
cars = getAllCars();
var car = cars.slice(0,1);
return car;
}
TL; DR:
定义cars
的良好做法应该是什么?
var cars;
var cars = [];
var cars = "";
我试图向他解释,如果您知道变量cars
将用于保存数组,则应使用空数组定义它。
他认为他知道变量100%将被分配一个数组,即cars = getAllCars();
所以无关紧要。在一个小功能中,这样的事情可能是可见的,但我认为这是不好的做法。
答案 0 :(得分:2)
将变量的类型经常更改为不相关的类型确实是不好的做法。 Javascript已经有两个完全正确的值,表示“无价值”:undefined
和null
。你读到的差异主要取决于你,但两者都比空字符串更合适。最自然的方式是默认undefined
:
var cars;
这会在范围中保留变量名称,但不会为其赋值。这是表达此代码实际执行情况的最清晰方式。
答案 1 :(得分:1)
JS是动态类型的,允许在运行时更改类型,但这会让您的代码感到困惑。
根据良好实践(如果不是最佳),建议在声明变量时初始化变量。这样可以提供更清晰的代码(清楚地表明汽车是一个阵列)并避免undefined
值。
var cars = [];
另一方面,一些开发者喜欢在必要时声明而不是初始化。所以这也很好。
var cars;
我认为这两者中的哪一个是意见问题或者可能是选择。但可以肯定的是,在您的示例中,初始化var cars = ""
根本没有意义。
答案 2 :(得分:0)
将空字符串定义为默认值是一种非常糟糕的做法。我会用
var cars = getAllCars();