Javascript использовать строгую ошибку не ловить

Я создаю приложение backbone.js, которое использует require.js для AMD. Для того, чтобы проверить use strict Поддержка в браузере, я включил следующий код. Тем не менее, когда код выполняется, выдается ошибка var o = {p:1, P:2} не пойман, как я ожидаю, и вместо этого убивает всю страницу.

Консоль Chrome выводит эту ошибку: Uncaught SyntaxError: Дублирование свойства данных в литерале объекта запрещено в строгом режиме

require([
    'jquery',
    'underscore',
    'backbone',
    'src/app'
], function(jQuery, _, Backbone, App){
    "use strict"

    var tooOld = true,
    isStrictMode = function () {
        try{
            var o = {p:1, p:2};
        } catch (e) {
            tooOld = false;
            new App;
        } finally {
            if (tooOld) {
                // Display some message
            }
        }
    }();
});

Почему ошибка сбивает мою страницу вместо того, чтобы ее перехватить? Как я могу это исправить?

1 ответ

Решение

Если вы хотите проверить поддержку строгого режима, подумайте:

function supportsStrict() {
  'use strict';
  return typeof function(){return this;}() == 'undefined';
}

console.log(supportsStrict()); // true if supports strict mode

Таким образом, вы можете тестировать самостоятельно и запускать разные ветви кода в зависимости от результата.

Другие вопросы по тегам