在javascript中你必须初始化一个变量吗?

时间:2014-03-06 13:35:41

标签: javascript

是否需要,良好实践或浪费时间来初始化变量?看看这段代码中的实例,这是正确的吗?

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);
 }

3 个答案:

答案 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')
}