5

このコードが問題ない理由:

var test = {
    fn1: function(_origin, _componentType) {
        if(arguments.length > 1) throw "xx";
        // this strict is ok
        "use strict";

        var interface               = new Object(this);
    }
}

これはそうではありませんが

var test = {
    fn1: function(_origin, _componentType) {
        // This strict throws SyntaxError
        "use strict";

        if(arguments.length > 1) throw "xx";
        var interface               = new Object(this);
    }
}

インターフェイスが厳密モードでは予約語であることは知っていますが、両方の例でエラーがスローされるべきではありませんか?

4

2 に答える 2

10

"use strict";厳密モードをトリガーするには、関数内 (またはスクリプト全体の場合はスクリプト内) の最初のステートメントである必要があります。他のどこでも、あなたは書いているかもしれません"merry christmas";

于 2015-11-09T07:52:27.907 に答える
4

最初の例は、厳密モードを実際には有効にしません。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode#Invoking_strict_modeを参照してください:

厳密モードは、スクリプト全体または個々の関数に適用されます。{} 中かっこで囲まれたブロック ステートメントには適用されません。そのようなコンテキストに適用しようとしても何もしません。

于 2015-11-09T07:52:43.307 に答える