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
Таким образом, вы можете тестировать самостоятельно и запускать разные ветви кода в зависимости от результата.