0

这是获取有关事物如何工作的信息的一般问题。如果有人需要更多解释,我可以发布一些示例代码。

我在 ColdFusion 8 中有一个充实的程序,其中包括大约 8 个 javascript 函数。如果一个称为 NW 的函数不起作用,可能是因为我丢失了一个大括号,那么在我修复错误之前,其他一些函数可能无法工作。我试图思考这些功能之间可能存在哪些联系。在函数调用 NW 的地方,我可以理解,如果 NW 损坏,它可能无法运行。但是,如果两者都从同一个元素调用,NW 用“onchange”调用,OtherFunction 用“onclick”调用,则会出现同样的问题,尽管两者都没有调用另一个,并且它们没有以任何其他方式连接。

有人可以向我解释“幕后”发生了什么吗?我不明白为什么这些单独的功能以这种方式交织在一起。

4

2 回答 2

2

因为 JavaScript 是一种解释型语言,所以在运行代码之前不会发现“致命”的语法错误。它们还可以产生级联效应。

例如:

function nw(){

/* some code */

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

请注意,因为我错过了解释器的结尾大括号function nw()不会关闭nw(),这otherFunction是一个内的闭包nw,但是因为它没有用大括号关闭,所以它无法运行nw或现在假定为关闭。所以这两个功能都不起作用。

Coldfusion 还在某些页面上添加了自己的 JS,这会使进程更难调试。

希望这是相关的,但听起来像你正在经历的。

于 2012-07-17T10:59:50.383 回答
0

忘记关闭大括号会使您的所有 javascript 无效,直到他可以找到一个作为函数声明或条件语句需要两者:在您拥有有效的结构化代码之前,js 引擎不会查看内部代码。

如果您的 js 函数之间没有依赖关系,那么它可能中断的唯一原因是 javascript 语法中的错误。例如,如果您在函数中引用不存在的变量,它将在调用此特定函数时停止。所有其他的应该运行良好。此外,当某个函数在某个时间失败时,通常你所有的 js 代码都会在那之后停止工作。

希望它是有道理的,但提供更多细节需要查看代码......这是我对通用解释的尝试:-)

于 2012-07-17T10:59:04.177 回答