Javascript 为什么会出现语法错误?

Javascript 为什么会出现语法错误?,javascript,try-catch,hoisting,Javascript,Try Catch,Hoisting,我试图从内部更好地理解提升try,因此我制作了以下测试用例,但它抛出了一个SyntaxError 这不是我所期望的 console.log(x); console.log(y); console.log(z); var x = 5; try { var y = getY(); } catch(){} console.log(x); console.log(y); console.log(z); function getY(){ throw "ERR"; return 6;

我试图从内部更好地理解提升
try
,因此我制作了以下测试用例,但它抛出了一个
SyntaxError

这不是我所期望的

console.log(x);
console.log(y);

console.log(z);

var x = 5;

try { var y = getY(); } catch(){}

console.log(x);
console.log(y);

console.log(z);


function getY(){
  throw "ERR";
  return 6;
}

catch
块应捕获错误,否则会触发语法错误。试试这个:

try { var y = getY(); } catch(e){}

此外,您的
z
x
变量从未定义。

块应捕获错误,否则会触发语法错误。试试这个:

try { var y = getY(); } catch(e){}

此外,您的
z
x
变量从未定义。

块应捕获错误,否则会触发语法错误。试试这个:

try { var y = getY(); } catch(e){}

此外,您的
z
x
变量从未定义。

块应捕获错误,否则会触发语法错误。试试这个:

try { var y = getY(); } catch(e){}

此外,
z
x
变量从未定义。
catch
块需要一个参数


catch块需要一个参数


catch块需要一个参数


catch块需要一个参数



错误是什么?错误是什么?错误是什么?错误是什么?错误是什么?这是测试用例的一部分!它是另一个控件的控件,其结果应该是可预测的。我不理解您的评论。因此
var
语句仍将被提升,尽管它被包装在try块中?是的,但您在
try
块中只获得了
y
。您的另外两个变量
z
x
从未定义,但您正在尝试记录它们。如果有一个全局范围,您将从全局范围中获取它们的值,否则您将获得
ReferenceError:x未定义
,这是测试用例的一部分!它是另一个控件的控件,其结果应该是可预测的。我不理解您的评论。因此
var
语句仍将被提升,尽管它被包装在try块中?是的,但您在
try
块中只获得了
y
。您的另外两个变量
z
x
从未定义,但您正在尝试记录它们。如果有一个全局范围,您将从全局范围中获取它们的值,否则您将获得
ReferenceError:x未定义
,这是测试用例的一部分!它是另一个控件的控件,其结果应该是可预测的。我不理解您的评论。因此
var
语句仍将被提升,尽管它被包装在try块中?是的,但您在
try
块中只获得了
y
。您的另外两个变量
z
x
从未定义,但您正在尝试记录它们。如果有一个全局范围,您将从全局范围中获取它们的值,否则您将获得
ReferenceError:x未定义
,这是测试用例的一部分!它是另一个控件的控件,其结果应该是可预测的。我不理解您的评论。因此
var
语句仍将被提升,尽管它被包装在try块中?是的,但您在
try
块中只获得了
y
。您的另外两个变量
z
x
从未定义,但您正在尝试记录它们。如果有一个全局范围,您将从全局范围中获取它们的值,否则您将获取
引用错误:x未定义
您可以在描述中添加代码示例和详细信息吗?包括一个链接是好的。例子更好。如果你这样做了,LMK…你能在描述中添加代码示例和详细信息吗?包括一个链接是好的。例子更好。如果你这样做了,LMK…你能在描述中添加代码示例和详细信息吗?包括一个链接是好的。例子更好。如果你这样做了,LMK…你能在描述中添加代码示例和详细信息吗?包括一个链接是好的。例子更好。如果你这样做,LMK。。。