Javascript “throw”和字符串串联的行为不清楚

Javascript “throw”和字符串串联的行为不清楚,javascript,Javascript,我有以下代码: const func=()=>{ 抛出新错误('hey')+'boo' 返回“OK” } 试一试{ 常量val=func() console.log(val) }捕获(错误){ console.log(错误) }这是因为您正在执行新错误('hey')+'boo'并抛出该错误(这可能会令人惊讶)。下面是代码的作用: 创建错误对象 在错误对象上执行+和'boo',这会将错误对象转换为字符串(“error:hey”),并将“boo”附加到该字符串上 抛出生成的“Error:heyb

我有以下代码:

const func=()=>{
抛出新错误('hey')+'boo'
返回“OK”
}
试一试{
常量val=func()
console.log(val)
}捕获(错误){
console.log(错误)

}
这是因为您正在执行
新错误('hey')+'boo'
并抛出该错误(这可能会令人惊讶)。下面是代码的作用:

  • 创建错误对象
  • 在错误对象上执行
    +
    'boo'
    ,这会将错误对象转换为字符串(
    “error:hey”
    ),并将
    “boo”
    附加到该字符串上
  • 抛出生成的
    “Error:heyboo”
    字符串
…然后捕捉并显示

与其他语言相比,JavaScript有点不同寻常,因为它允许您抛出任何值,包括字符串。您不限于抛出
Error
对象

这段代码也做了同样的事情,希望通过将事情分解为多个步骤使其更清晰:

const func=()=>{
//创建错误
常量错误=新错误(“嘿”);
//将`“boo”`附加到它以获取字符串
常量str=错误+“boo”;
//抛开绳子
投掷str;
//这是永远达不到的
返回“OK”;
};
试一试{
常量val=func();
控制台日志(val);
}捕获(错误){
console.log(错误);
}
您可以使用检查语句执行的顺序。展开“要点”右侧的树: