Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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 具有开关盒的函数中“let”和“var”之间的差异_Javascript - Fatal编程技术网

Javascript 具有开关盒的函数中“let”和“var”之间的差异

Javascript 具有开关盒的函数中“let”和“var”之间的差异,javascript,Javascript,我正在开发一个功能,在函数的开关盒中使用let时发现了一个问题。如果我改为var,它就会工作。我已经阅读了let和var之间的差异。但这种情况是否导致了块级范围的问题。有点困惑 谢谢你的帮助 var a=样本数据 const returnDataOfLet=a=>{ a型开关{ 大小写字符串: let a=a.split//将抛出一个错误更改,让var执行该操作 归还 } } logreturnDataOfLeta是关于这个主题的详细指南。一般来说: let是块作用域,而var是函数作用域,从

我正在开发一个功能,在函数的开关盒中使用let时发现了一个问题。如果我改为var,它就会工作。我已经阅读了let和var之间的差异。但这种情况是否导致了块级范围的问题。有点困惑

谢谢你的帮助

var a=样本数据 const returnDataOfLet=a=>{ a型开关{ 大小写字符串: let a=a.split//将抛出一个错误更改,让var执行该操作 归还 } } logreturnDataOfLeta是关于这个主题的详细指南。一般来说:

let是块作用域,而var是函数作用域,从函数外部不可见。 在声明变量之前无法访问let,实际上它是JS世界中许多错误和混乱的根源 我们不能重新申报 这里使用的方法是,在任何迭代中重新声明变量,这会导致错误。但您始终可以重新指定的值

设a=样本数据; const returnDataOfLet=a=>{ a型开关{ 大小写字符串: 返回a.split; } } console.logreturnDataOfLeta 全局定义的变量a与作为参数传递给函数的变量a不同。它就像变量的别名。 而且在case字符串中不需要再次创建,因为它已经存在于函数中。这里不是范围的问题,而是定义和参数的问题

var a=样本数据 const returnDataOfLet=a=>{ a型开关{ 大小写字符串: a=a.split//将抛出一个错误更改,以使其生效 归还 } }
console.logreturnDataOfLeta在声明let a的块内。这将创建一个新变量a

然后你叫a.split。这会抛出一个错误,因为a未定义,它必须是未定义的:您还没有给它一个值

由于异常,程序在该点停止

如果使用var而不是let,那么var将被完全忽略,因为该范围中已经声明了a

由于尚未创建新变量,因此a是传递给函数的参数

这是一个字符串,因此您可以对其调用split并将结果赋回参数列表中声明的变量。

完全删除let,或者更好地使用新变量名