是否需要,良好实践或浪费时间来初始化变量?看看这段代码中的实例,这是正确的吗?
var instance = ''
var myArgs = require('optimist').argv,
switch (myArgs._[0]) {
case 'insult':
var instance = 'insult'
console.log(myArgs.n || myArgs.name, 'smells quite badly.');
break;
case 'compliment':
var instance = 'compliment'
console.log(myArgs.n || myArgs.name, 'is really cool.');
break;
default:
console.log(help);
}
答案 0 :(得分:2)
如果您尝试分配到未初始化的变量,那么您将创建一个全局变量。这很糟糕,不要这样做。
如果您启用了严格模式,则会引发参考错误。这很糟糕,不要这样做。
如果您尝试从未初始化的变量中读取,则会引发参考错误。这很糟糕,不要这样做。
始终初始化变量。
请注意,JavaScript范围是在 function 级别处理的,而不是块级别,var
语句是提升。
通常认为将变量仅声明一次并位于函数顶部是一种好习惯。从您的var
移除instance
,但功能顶部除外{。}}。
答案 1 :(得分:0)
在一般的编程语言中,通常建议您初始化变量,以便将它们设置为已知状态。这通常可以帮助您发现错误。
话虽如此,在Javascript中,未初始化的变量具有未定义的值,您可以检查它,因此您是否会获得更多 - 这是值得怀疑的 - 除非该变量有一个有用的默认值。
答案 2 :(得分:0)
你不应该var
两次。
Javascript是一种动态语言,因此您可以先创建一个int
,然后是string
,然后是function
。您之前不必说int
。
在你的例子中:
var instance = ''
var myArgs = require('optimist').argv,
switch (myArgs._[0]) {
case 'insult':
instance = 'insult'
console.log(myArgs.n || myArgs.name, 'smells quite badly.');
break;
case 'compliment':
instance = 'compliment'
console.log(myArgs.n || myArgs.name, 'is really cool.');
break;
default:
console.log(help);
}
当然,如果您想确保您的var是string
使用typeof
。例如:
if(typeof instance !== 'string'){
alert('should be a string')
}