我通过JSLint运行了以下内容:
$(document).ready(function() {
/*
Add paragraph on page load
*/
// Get all header elements
var header = document.getElementsByTagName('h1'),
parent,
newP,
text;
// Loop through the elements
for (var i=0, m = header.length; i < m; i++) {
parent = header[i].parentNode;
newP = document.createElement("p");
text = document.createTextNode('This paragraph was inserted with JavaScript!');
newP.appendChild(text);
// Insert the new P element after the header element in its parent node
parent.insertBefore(newP, header[i].nextSibling);
}
// so much easier with jQuery!
//$('.section > h1').after('<p>I am a new paragraph & I have been added to the page with javascript!</p>');
/*
Toggle show/hide
*/
// display show/hide link - hidden by default if JS disabled as functionality is not available
$('#content > .section > h2 > a').removeClass('hide');
// hide What's new on page load - all content will be available if JS disabled
$('#content > .section > ul').addClass('hide');
// show/hide content on click event
$('#content > .section > h2 > a').live('click',function() {
$('#content > .section > ul').toggle();
return false;
});
/*
JSON
*/
var $jsonURL = 'scripts/response.json';
$.ajax({
type: 'GET',
url: $jsonURL,
dataType: "json",
success: function(data){
$.each(data.data, function(i, data){
var $html = '';
var $string = '';
if (data.type == 'comment') {
$string = 'file';
} else {
$string = 'workspace';
}
$html += '<li class="' + data.type + '">';
$html += '<strong>New ' + data.type + '</strong> was added to the ' + $string + ' ';
$html += '<a href="' + data.target + '">' + data.target + '</a> ';
$html += '<a href="' + data.workspace + '">' + data.workspace + '</a>';
$html += ' by <a href="#">' + data.user + '</a>';
$html += '</li>';
$('#content > .section > ul').append($html);
});
},
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
});
我收到此错误:
Error:
Problem at line 89 character 4: Mixed spaces and tabs.
}
Implied global: $ 1,31,34,37,39,51,57,81, document 1,8,16,17, alert 87,88
不确定如何解决?
答案 0 :(得分:33)
当您的缩进使用空格和制表符的组合时会发生此错误,例如{SPACE}{SPACE}{TAB}{SPACE}
或{TAB}{SPACE}{TAB}
。我不确定为什么这是一个错误,而不是一个警告,但解决方案是重新访问该行,并确保你只使用空格或标签。
混合制表符和空格的问题是,在其他应用程序中查看文件时,您可能会遇到缩进问题。例如,一个用户可能将选项卡配置为等于两个空格,另一个用户可以打开第一个用户的文件并查看不均匀的缩进,因为两个空格加一个选项卡等于6个空格而不是第一个应用程序中的4个空格。使用其中一个可以确保代码的可读性。
有趣的是,Stack Overflow将标签规范化为4个空格,因此将代码从此处复制并粘贴回JSLint可以解决问题。
答案 1 :(得分:11)
您也可以考虑使用JSHint中提供的“smarttabs”选项(JSHint是JSLint的直接替代品,更好)。
这篇文章非常有见地,客观地解释了制表符v空格中的权衡(我没有意识到甚至有很多人可以说这个主题),并演示了智能制表符逻辑应该如何表现:
http://www.emacswiki.org/emacs/SmartTabs
基本上,如果使用制表符“缩进”,只要任何空格“仅用于对齐”,即允许使用空格进行“对齐”,即它们前面有正确数量的缩进制表符:< / p>
这使得此代码段合法(“----&gt;”代表TAB):
function foo() {
---->var a = 4,
----> b = 5,
----> c = 6;
}
您可以使用名为“.jshintrc”的文件执行此操作:
{
"smarttabs": true
}
或者您可以在源代码中使用注释设置它:
/*jslint smarttabs:true */
或者你可以完全抛弃标签......(宗教战争随之而来)。
就个人而言,我使用JSHint,它是JSLint的衍生项目,可以说具有更多的可配置性等。在大多数情况下,它们是相同的工具。 http://jshint.com/docs/#options。我推荐它。大多数选项在两个工具之间是通用的。
我也不使用标签。永远。鉴于选择,我是一个两个人的空间。