我遇到了JSLint的问题,它提供了一个难以理解的错误:
我正在尝试分析以下结构的代码:
<script type="text/javascript">
var MyGlobalObj = MyGlobalObj || {}; //used for creating namespace security
MyGlobalObj.MyFunction = function () {
//valid javascript
}
$(document).ready(function () {
//Stuff I want analyzed
});
</script>
我在我的代码中使用了javascript和jQuery的混合。但是,JSLint声称,在准备就绪的操作上,即:
Unexpected '$'.
$(document).ready(function() {
对不起,但......什么?为什么会出乎意料?什么是&#34;正确&#34;执行?
Options I am using:
/*jslint white: true, browser: true, devel: true */
Entry in the predef box:
$
注意:在其他地方,我根据需要声明$(变量)没有问题。它只是一行。
答案 0 :(得分:0)
出现意外的JSLint优先级冲突以产生此错误。
根据分号的JSLint文档:
JSLint期望每个语句后跟
;
,除了。{for
,function
,if
,switch
,try
和while
。 JSLint并不期望 看到不必要的分号或空的陈述。
为了提供命名空间保护,我根据这里的教程实现了命名空间:
http://elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces/
但是,在为命名对象分配新变量时,JSLint(显然是标准约定)认为代码
Obj.Method = function (TheArgs) { /*do stuff*/ };
无论使用function关键字,后面都应加分号。这源于赋值运算符对分号的要求,取代了函数关键字省略分号。
感谢Felix Kling指出“意外”表示紧接意外行之前的代码没有正确结束。
答案 1 :(得分:0)
这是该代码的JSLint版本。
使用严格
/ * global $,document * /
“use strict”;
var MyGlobalObj = MyGlobalObj || {}; //用于创建名称空间安全性
MyGlobalObj.MyFunction = function(){ //有效的javascript };
$(document).ready(function(){ //我要分析的东西 });