Javascript JSLint混合空格和制表符错误
我通过JSLint运行了以下内容:Javascript JSLint混合空格和制表符错误,javascript,jquery,jslint,Javascript,Jquery,Jslint,我通过JSLint运行了以下内容: $(document).ready(function() { /* Add paragraph on page load */ // Get all header elements var header = document.getElementsByTagName('h1'), parent, newP, text; // Loop through
$(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);
}
});
});
不确定如何修复?当缩进同时使用空格和制表符时会发生此错误,例如,
{SPACE}{SPACE}{TAB}{SPACE}
或{TAB}{SPACE}{TAB}
。我不确定为什么这是一个错误而不是一个警告,但解决方法是重新访问该行并确保只使用空格或制表符
混合使用制表符和空格的问题是,在不同的应用程序中查看文件时,可能会遇到缩进问题。例如,一个用户可能将选项卡配置为等于两个空格,另一个用户可能打开第一个用户的文件并看到不均匀的缩进,因为两个空格加一个选项卡等于6个空格,而第一个用户的应用程序中为4个空格。使用其中一种方法可以确保代码具有更好的可读性
有趣的是,堆栈溢出将制表符规范化为4个空格,因此将代码从这里复制并粘贴回JSLint可以解决问题 > P>您还可以考虑使用JSHIT中的“SMATTABS”选项(JSITT是JSLint的替换项,最好)。 这篇文章真的很有见地,客观地解释了制表符与空格之间的权衡(我甚至不知道有多少人可以对这个主题说),并演示了智能制表符逻辑应该如何运作: 基本上,如果使用制表符进行“缩进”,则允许使用空格进行“对齐”,只要任何空格“仅用于对齐”,即它们前面有正确数量的缩进制表符: 这使得此代码段合法(“--->”表示一个选项卡): 可以使用名为“.jshintrc”的文件执行此操作:
{
"smarttabs": true
}
或者,您可以在源代码中使用注释进行设置:
/*jslint smarttabs:true */
或者你可以完全放弃标签。。。(宗教战争接踵而至)
就我个人而言,我使用JSHint,它是JSLint的一个派生项目,可以说具有更高的可配置性等等。在大多数情况下,它们是相同的工具。我会重新考虑的。大多数选项在这两种工具之间是通用的
我也不使用标签。曾经如果有选择的话,我是一个两个空格的人。或者只需搜索并替换选项卡->spaces@vsync:是的,但复制和粘贴到SO的大规模杀伤性武器中是实现同样目标的一种更加复杂的方法。因此,我强烈建议你这样做。谢谢你。您知道如何在JSLint中定义错误忽略区域吗?但解决方案是重新访问该行,并确保您只使用空格或制表符,这对于具有许多源文件和行的项目来说是不可行的解决方案。请注意,
smarttabs
选项仅存在于JSHint中,而不是JSLint中(JSHint是从中派生的)。
{
"smarttabs": true
}
/*jslint smarttabs:true */