你们中的一些人制作了一些很棒的javascript课程,我渴望在这个冒险中成为更好的开发人员。
其中一门课程是关于EcmaScript6 const和let变量以及Try and Catch语句的。因此,作为一个好奇的初级开发人员,我自己通过在常量中声明箭头功能并尝试更改常量来进行尝试:
const userValidation = (userValid) => userValid == true ? "You may enter" : "You may not enter, sorry.";
try {
var userValidation = function(userID) {
//Execute some code which ofcourse will never execute
}
}
catch(err) {
console.log("Woops, something went wrong.");
}
console.log(userValidation(false));
我期望的行为是错误消息:“糟糕,出了点问题。”因为我已经声明了常量“ UserValidation”。但这不是正在发生的事情,而是控制台只是给出了错误并消失了:
我在做什么错了?
答案 0 :(得分:1)
尝试,使用catch语句捕获运行时错误,但是在解析Javascript之前(运行之前)会检测到此SyntaxError。这是因为您不是在这里重新分配(const)变量,而是使用其他标识符(var)重新定义它。如果代码是
const userValidation = (userValid) => userValid == true ? "You may enter" : "You may not enter, sorry.";
try {
userValidation = function(userID) {
//Execute some code which ofcourse will never execute
}
}
catch(err) {
console.log("Woops, something went wrong.");
}
如果没有var
标识符,则将成为运行时错误。该代码将尝试重新分配const
变量,并且您的catch语句将执行。