Ошибка JS в Safari: неожиданный токен '=' - PullRequest
1 голос
/ 13 января 2012

Я использую jsio (jslibs - http://code.google.com/p/jslibs/wiki/jsio) и сталкиваюсь с ошибкой в ​​Safari. Неожиданный токен '='

Проблема с этой частью кода.

this.debugPath = function(path) { return path; }

// IE6 won't return an anonymous function from eval, so use the function constructor instead
var rawEval = (typeof eval('(function(){})') == 'undefined')
            ? function(src, path) { return (new Function('return ' + src))(); }
            : function(src, path) { var src = src + '\n//@ sourceURL=' + path; return window.eval(src); };

// provide an eval with reasonable debugging
this.eval = function(code, path, origCode) {
......................

Кажется, проблема в строке, где назначается rawEval. Комментируя это, ошибка переместилась в другое место. Кто-нибудь сталкивался с этой проблемой раньше?

Помощь?

Спасибо.

1 Ответ

0 голосов
/ 18 февраля 2012

Это на будущее, если кто-то (включая меня) снова столкнется с этой проблемой.

Ошибка, которую выдает Safari в моем случае, является ложной или, по крайней мере, довольно двусмысленной.

Я определил класс в одной из моих библиотек.И я не хотел хранить дескриптор / ссылку на объект этого класса.Итак, я сделал что-то вроде:

function reply(...) {
    new ClassName(.....).onHide = bind(...);
    ..........
}

Когда я изменил его на следующее, Safari перестал жаловаться.

function reply(...) {
    var dg = new ClassName(......);
    dg.onHide = bind(...);
    ..............
}

Объявление нового объекта и определение одного из его свойств-членов(или функции) может быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...