このコードがifブロックでエラーをスローするのはなぜReferenceError: x is not defined
ですか?xという別の変数を定義するのは間違っているように見えることは理解していますが、新しいconst xを定義するときにエラーをスローするべきではありませんか?
'use strict'
function task() {
const x = 5
return _subTask({x, condition: true})
}
function _subTask({x, condition}) {
if (condition) {
const y = x * 10
const x = y * 10
return x
} else {
return 0
}
}
console.log(task())
ここで発生したエラーは、一時的なデッドゾーン(TDZ)と呼ばれます。ES6によると、ブロックにletまたはconstがある場合。letまたはconst宣言の前は、変数にアクセスできません。
{
// TDZ start here
// x can not been accessed
const y = x * 10
const x = y * 10
return x
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加