初学者变量声明 - JavaScript

时间:2016-05-13 12:46:09

标签: javascript variables

我正在玩这个简单的编码挑战来反转一个字符串:

function FirstReverse(str) { 
  var newStr;
  for (var i = str.length - 1; i >= 0; i--) {
    console.log(str.charAt(i));
    var newStr = newStr + str.charAt(i);
  }
  return newStr;          
}
console.log(FirstReverse("hey"));

结果变为undefinedyeh而非yeh但是,当我将var newStr更改为var newStr = '';时,它突然起作用了。

在我将其分配给空字符串之前,JavaScript认为newStr是什么数据类型?

3 个答案:

答案 0 :(得分:3)

如果你没有初始化变量,它会以undefined开头(你可能已经从结果中得知)。

  

尚未赋值的变量属于undefined类型。一个   如果变量是,方法或语句也返回undefined   被评估的没有指定的值。函数返回   如果未返回值,则undefined

答案 1 :(得分:2)

  

在我将其分配给空字符串之前,JavaScript认为newStr是什么数据类型?

var myVar;只是声明变量,但不指定初始值。未明确分配值的任何值的值为undefined

由于你的循环是自我赋值newStrnewStr = newStr + str.charAt(i);),第一次迭代将尝试将undefined连接到自身,它与连接操作数(+)结合使用将undefined强制转换为"undefined"

答案 2 :(得分:1)

如果在初始化变量时未设置值,则将其设置为undefined

我认为建议设置一个默认值'对于每个初始化变量。