Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
初学者变量声明-JavaScript_Javascript_Variables - Fatal编程技术网

初学者变量声明-JavaScript

初学者变量声明-JavaScript,javascript,variables,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"

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

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"));
结果变成了
unfinedeyeh
,而不是
yeh
。但是,当我将
var newStr
更改为
var newStr='',它突然起作用了


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

如果不初始化变量,它将以开头(您可能已经从结果中了解到)

未指定值的变量类型为
未定义
。A. 如果变量 正在评估的对象没有指定的值。函数返回
未定义
如果未返回值


如果您不初始化变量,它将以开始(您可能已经从结果中了解到)

未指定值的变量类型为
未定义
。A. 如果变量 正在评估的对象没有指定的值。函数返回
未定义
如果未返回值

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

var-myVar
只声明变量,但不指定初始值。任何未明确指定值的值都是
未定义的

由于循环是自赋值的
newStr
newStr=newStr+str.charAt(i);
),第一次迭代将尝试将
未定义的
连接到自身,这与连接操作数(
+
)一起将
未定义的
强制为
未定义的

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

var-myVar
只声明变量,但不指定初始值。任何未明确指定值的值都是
未定义的


由于循环是自赋值的
newStr
newStr=newStr+str.charAt(i);
),第一次迭代将尝试将
未定义的
连接到自身,这与连接操作数(
+
)一起将
未定义的
强制为
未定义的

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


我认为最好为每个初始化的变量设置一个“默认值”。

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


我认为最好为每个初始化的变量设置一个“默认值”。

您需要使用
var newStr=''初始化变量并且不需要在for loop中使用var重新声明它。JavaScript有时会因为具有未定义或“部分”定义值的奇怪行为而受到批评。检查这一点以获得更不可预测的结果,JavaScript从1:20开始:您需要使用
var newStr=''初始化变量并且不需要在for loop中使用var重新声明它。JavaScript有时会因为具有未定义或“部分”定义值的奇怪行为而受到批评。查看此内容以了解更不可预测的结果,JavaScript从1:20开始: