2017-10-26 3 views
2

Converting mistakes into errorsの下に読まれたのはhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_modeであり、明確な例を作りたかったのです。だから私はJSFiddleに行き、'use strict';が実際に何を達成しているかを見出そうとしました。ここでは、コードは次のようになります。JSFiddleで 'strict strict'の例

(() => { 
    // Strict mode makes assignments which would otherwise silently fail to throw an exception. 
    'use strict'; 
    try { 
     const undefined = 666; // throws a TypeError 
    } catch(error) { 
     console.error(error) 
    } 
    console.log('Is this read?'); 
})(); 

https://jsfiddle.net/cvxau3m7/

私は放火犯に表示するエラーを期待していました。私は何とかこれを誤解しなければならないのですか?

答えて

2

undefinedという変数が(即時スコープですでに作成されている場合を除き)undefinedという定数を作成しても問題ありません。

あなたのコメントは、「そうでなければ黙って失敗するでしょう」と言っていますが、あなたのコードはそれをしません。

(() => { 
 
    'use strict'; 
 
    const undefined = "some value"; 
 
    console.log("undefined is " + undefined); 
 
})();

あなたがグローバルスコープ内の変数を再宣言するリンクの例。彼らは狭い範囲でそれらを覆い隠すわけではありません。

+0

ああ。私の例には欠陥があるかもしれませんが、 ''厳密な使用 ';が宣言されていて、 '' use strict; (例として文書化されて以来、私は定義されていませんでした) –

+0

確かに。 「const」が削除された場合、例外はスローされます。何もスローされないため、静かではありません。 説明: https://stackoverflow.com/questions/8783510/how-dangerous-is-it-in-javascript-really-to-assume-undefined-is-not-overwritte – KVNSTOBJEKT

関連する問題