2017-06-01 81 views

回答

2

該帖子的作者明確地犯了一個錯誤 - 它發生在我們所有人身上。

因此,const聲明是塊作用域,像docs說:

常量是塊範圍的,就像使用let語句定義的變量。常量的值不能通過重新賦值而改變,並且不能重新聲明。

這就是爲什麼你不能訪問它的try-catch塊外。

爲了解決這個問題:

  • 要麼使用var,而不是常量的:

    try { 
        // When declared via `var`, the variable will 
        // be declared outside of the block 
        var foo = "bar" 
    } catch (e) { 
        console.log(e) 
    } 
    
    try { 
        console.log(foo) 
    } catch (e) { 
        console.log(e) 
    } 
    
  • 或者你可以聲明變量try-catch之外,使用let

    // Maybe it's clearer to declare it with let and 
    // assign the value in the first try-catch 
    let foo; 
    try { 
        foo = "bar" 
    } catch (e) { 
        console.log(e) 
    } 
    
    try { 
        console.log(foo) 
    } catch (e) { 
        console.log(e) 
    } 
    
+0

正如您在帖子中看到的,作者使用'const',這是如何工作的? –

+0

@PhillipYS我會說這是一個錯誤。 –

+0

@PhillipYS我只是試過了,是的,這是作者犯的一個錯誤。好的趕上! –