グローバルコンテキストで以下のコードを実行しなぜJavaScriptは削除時に宣言の有無を区別しますか?
var x = 1;
y = 1
delete x //false
delete y //true
両方x
とy
はグローバルオブジェクトのプロパティです。なぜJavaScriptはそれらをある程度区別しなければならないのですか?
それはES5標準the delete
operatorとthe object internal method[[delete]]
にルーチンaccoringに従うことは簡単です。
より明確な質問はなぜ異なる[[configurable]]
属性を採用していますか?
@FelixKlingこんにちは、もう一度見てね!しかし、なぜ[[configurable]]属性が異なるのか分かりません。あなたは標準を読んでいるが、それについての証拠は見つけられなかったことを知っている。そのような決定は? – yuan
さて、私はその決定をしなかったことを伝えることはできません:) ECMAScript標準で作業している人に連絡してください。 –