Ошибка в одной функции Javascript приводит к тому, что другие перестают работать

Это общий вопрос, чтобы получить информацию о том, как все работает. Я могу опубликовать пример кода, если кому-то нужно больше объяснений.

У меня есть содержательная программа в ColdFusion 8, которая включает в себя около 8 функций JavaScript. Если одна функция, называемая NW, не работает, возможно, из-за того, что я потерял фигурную скобку, некоторые другие могут не работать, пока я не исправлю ошибку. Я пытался подумать, какие связи могут быть между этими функциями. Когда функция вызывает NW, я мог понять, что она может не функционировать, если NW сломан. Однако та же проблема возникает, если оба они вызываются из одного и того же элемента, NW с "onchange" и OtherFunction с "onclick", хотя ни один из них не вызывает другого, и они не связаны каким-либо другим способом.

Может ли кто-нибудь объяснить мне, что происходит "под капотом"? Я не понимаю, почему эти отдельные функции взаимосвязаны таким образом.

2 ответа

Поскольку JavaScript является интерпретируемым языком, синтаксические ошибки, которые являются "фатальными", не обнаруживаются, пока вы не запустите код. Они также могут иметь каскадный эффект.

например:

function nw(){

/* some code */

function otherFunction(){
 /* other code*/
}

Обратите внимание, потому что я пропустил конец фигурной скобки function nw() переводчик не закроется nw() и это otherFunction это закрытие внутри nw, но поскольку он не закрыт фигурной скобкой, он не может работать nw или его теперь предполагается закрытие. Так что ни одна функция не будет работать.

Coldfusion также добавляет свой собственный JS на некоторые страницы, что может затруднить отладку процесса.

Надеюсь, что это актуально, но похоже, что вы испытываете.

Если вы забудете закрыть фигурные скобки, то весь ваш javascript станет недействительным до тех пор, пока он не найдет его в виде объявления функции или условного оператора, требующего и того, и другого: движок js не будет смотреть на код внутри, пока у вас не будет действительного структурированного кода.

Если у вас нет зависимости между вашими js-функциями, единственная причина, по которой он может прерваться, это ошибка в синтаксисе javascript. Если вы, например, ссылаетесь на несуществующую переменную в функции, она остановится при вызове этой конкретной функции. Все остальные должны работать нормально. Также, когда в определенный момент происходит сбой функции, обычно весь ваш js-код перестает работать после этого.

Надеюсь, что это имеет смысл, но для получения более подробной информации нужно увидеть код... это моя попытка общего объяснения:-)

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