为什么我得到with语句的语法错误,但我实际上没有使用任何语法?

时间:2012-09-01 12:08:25

标签: javascript

在下面的代码中,我没有使用任何'with statement',但是当我设置断点时,它给了我错误:

SyntaxError: 'with' statements are not valid in strict mode

(function () {
    'use strict';
    function addItem() {
        var orderListElement, newLi, childCount;
        orderListElement = document.getElementById('orderList');
        newLi = document.createElement('li');
        childCount = orderListElement.children.length;
        newLi.textContent = 'new item ';
        orderListElement.appendChild(newLi);
    }
    function deleteItem() {
        var orderListElement, lastLi;
        orderListElement = document.getElementById('orderList');
        lastLi = orderListElement.lastChild;
        orderListElement.removeChild(lastLi);
    }
    function registHandler() {
        var addItemButton, deleteItemButton;
        addItemButton = document.getElementById('addItem');
        deleteItemButton = document.getElementById('deleteItem');
        addItemButton.addEventListener('click', addItem, false);
        deleteItemButton.addEventListener('click', deleteItem, false);
    }
    window.addEventListener('load', registHandler, false);
}());

那太烦人了。

1 个答案:

答案 0 :(得分:1)

这似乎是Safari的一个已知问题:https://bugs.webkit.org/show_bug.cgi?id=65829

要重现错误,您只需在控制台中输入任何代码,同时在断点处和严格模式下停止。

以下是错误报告中的代码:

(function(){
    "use strict";
    debugger;
})();

所以当你在断点处时,转到控制台并输入2+3(或任何表达式),你就会得到错误。

enter image description here