Javascript 具有开关盒的函数中“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//将抛出一个错误更改,以使其生效 归还 } }Javascript 具有开关盒的函数中“let”和“var”之间的差异,javascript,Javascript,我正在开发一个功能,在函数的开关盒中使用let时发现了一个问题。如果我改为var,它就会工作。我已经阅读了let和var之间的差异。但这种情况是否导致了块级范围的问题。有点困惑 谢谢你的帮助 var a=样本数据 const returnDataOfLet=a=>{ a型开关{ 大小写字符串: let a=a.split//将抛出一个错误更改,让var执行该操作 归还 } } logreturnDataOfLeta是关于这个主题的详细指南。一般来说: let是块作用域,而var是函数作用域,从
console.logreturnDataOfLeta在声明let a的块内。这将创建一个新变量a 然后你叫a.split。这会抛出一个错误,因为a未定义,它必须是未定义的:您还没有给它一个值 由于异常,程序在该点停止 如果使用var而不是let,那么var将被完全忽略,因为该范围中已经声明了a 由于尚未创建新变量,因此a是传递给函数的参数 这是一个字符串,因此您可以对其调用split并将结果赋回参数列表中声明的变量。完全删除let,或者更好地使用新变量名