在javascript中查找错误
我有一些JavaCScript文件,我正在使用js打包器打包它们,然后将它们全部合并并包含在一个页面中 问题是,在打包后,我会遇到以下错误: 错误:丢失;声明前 我认为这是因为在js文件的某个地方使用了新行,而不是在javascript中查找错误,javascript,jquery,Javascript,Jquery,我有一些JavaCScript文件,我正在使用js打包器打包它们,然后将它们全部合并并包含在一个页面中 问题是,在打包后,我会遇到以下错误: 错误:丢失;声明前 我认为这是因为在js文件的某个地方使用了新行,而不是字符,由于封隔器删除新行,因此会出现错误 那么,我怎样才能找到命令 当您在不打包的情况下使用这些文件时,它们是否会给您带来错误?某些打包程序要求您在使用文字定义函数时以及在使用对象文字时放置分号(否则会生成错误的代码--请参阅): var func=function(){ ... };
代码>字符,由于封隔器删除新行,因此会出现错误
那么,我怎样才能找到脚本中是否包含代码>命令 当您在不打包的情况下使用这些文件时,它们是否会给您带来错误?某些打包程序要求您在使用文字定义函数时以及在使用对象文字时放置分号(否则会生成错误的代码--请参阅):
var func=function(){
...
}; // 存在一个名为jslint的工具,它可以使用多种选项静态分析JavaScript源代码。它应该告诉你失败在哪里。还有一个在线版本。过来看:
根据您使用的工具,可能会发生这种情况。想象两个.js文件:
a.js
(function() {
var bar = 10;
}())
var foo = 5;
alert(foo);
;(function() {
var bar = 10;
}())
;var foo = 5;
alert(foo);
b.js
(function() {
var bar = 10;
}())
var foo = 5;
alert(foo);
;(function() {
var bar = 10;
}())
;var foo = 5;
alert(foo);
两者都可以单独工作,但如果将它们打包在一起,则不再工作:
(function() { var bar = 10; }())var foo = 5;alert(foo);
显然,因为缺少一个代码>。避免这种情况的一个好模式是用启动每个javascript文件代码>,例如:
固定a.js
(function() {
var bar = 10;
}())
var foo = 5;
alert(foo);
;(function() {
var bar = 10;
}())
;var foo = 5;
alert(foo);
固定b.js
(function() {
var bar = 10;
}())
var foo = 5;
alert(foo);
;(function() {
var bar = 10;
}())
;var foo = 5;
alert(foo);
输出
;(function() {var bar = 10;}());var foo = 5;alert(foo);
一切正常,谢谢 通过JSLint传递解包的代码。它会告诉你在哪里放置分号。但是,它也可能指示许多其他错误:)您可能希望切换压缩器。YUI压缩程序很好,但Google闭包编译器可能更好。这是一篇关于这个主题的过时文章:。谢谢。发现它:D(这是cycle jquery插件,顺便说一句)用分号结束每个js文件不是更有意义吗?@Šime Vidas:我不确定这是否更有意义。我喜欢把它放在最前面,所以很明显它不需要滚动到最后。我想这也有道理:)虽然,我不知道,因为我从不接受不带分号的代码开始。@Alex Packer不喜欢在对象和函数文本中缺少分号。尝试通过JSLint运行原始文件;您应该能够找到丢失的分号。