变量被声明但未赋值时有什么值?

问题描述 投票:0回答:3

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

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
是什么数据类型?

javascript variables undefined variable-initialization
3个回答
3
投票

如果您不初始化变量,它会以

undefined
开头(您可能已经从结果中看出)。

未赋值的变量属于

undefined
类型。一个 如果变量是,方法或语句也返回
undefined
被评估没有分配值。函数返回
undefined
如果未返回值。


2
投票

在我将

newStr
分配给空白字符串之前,JavaScript 认为它是什么数据类型?

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

由于您的循环是自分配

newStr
(
newStr = newStr + str.charAt(i);
),因此第一次迭代将尝试将
undefined
连接到自身,这与连接操作数 (
+
) 结合将强制
undefined
"undefined"


1
投票

如果初始化变量时没有设置值,则设置为

undefined

我认为为每个初始化变量设置一个“默认值”是非常建议的。

© www.soinside.com 2019 - 2024. All rights reserved.