Javascript 返回奇数错误的JSHint
我有下面的脚本,我是在stacks上的人的帮助下创建的,用于创建计算器和相应地更新DOM。我最近把我的编辑器改成了一个有JSHint的编辑器。我给了我一些可能性错误,我希望有人能提供洞察 主要的一个是“不要在循环中使用生成函数”,它指的是.addEventListener数组推送。为什么这是一个问题,为什么我要这样做Javascript 返回奇数错误的JSHint,javascript,jshint,Javascript,Jshint,我有下面的脚本,我是在stacks上的人的帮助下创建的,用于创建计算器和相应地更新DOM。我最近把我的编辑器改成了一个有JSHint的编辑器。我给了我一些可能性错误,我希望有人能提供洞察 主要的一个是“不要在循环中使用生成函数”,它指的是.addEventListener数组推送。为什么这是一个问题,为什么我要这样做 var currentFunction = []; function pushToArray(v){ currentFunction.push(v);
var currentFunction = [];
function pushToArray(v){
currentFunction.push(v);
addtoScreen(v);
}
function addtoScreen(vTag){
var screen = document.getElementById("screen");
if(currentFunction.length == 1){
var newCalc = document.createElement("p");
newCalc.className = "calc";
var opInt = document.createElement("span");
opInt.innerHTML = vTag;
newCalc.appendChild(opInt);
screen.appendChild(newCalc);
}else if(vTag == "="){
var opInt = document.createElement("span");
opInt.innerHTML = vTag;
}else{
var opInt = document.createElement("span");
opInt.innerHTML = vTag;
newCalc = screen.lastChild;
if(newCalc){
newCalc.appendChild(opInt);
}else{
screen.appendChild(opInt);
}
}
}
var numbers = document.getElementsByTagName("button");
for(var i = 0; i < numbers.length; i++){
if(numbers.item(i).id != "equalButton"){
numbers.item(i)
.addEventListener("click", function(){pushToArray(this.value);});
}
}
var currentFunction=[];
功能推送阵列(v){
当前功能推送(v);
添加屏幕(v);
}
功能添加至屏幕(vTag){
var screen=document.getElementById(“screen”);
如果(currentFunction.length==1){
var newCalc=document.createElement(“p”);
newCalc.className=“calc”;
var opInt=document.createElement(“span”);
opInt.innerHTML=vTag;
新计算附件(opInt);
screen.appendChild(newCalc);
}否则,如果(vTag==“=”){
var opInt=document.createElement(“span”);
opInt.innerHTML=vTag;
}否则{
var opInt=document.createElement(“span”);
opInt.innerHTML=vTag;
newCalc=screen.lastChild;
如果(新计算){
新计算附件(opInt);
}否则{
屏幕。追加子对象(opInt);
}
}
}
变量编号=document.getElementsByTagName(“按钮”);
对于(变量i=0;i
如果函数在循环中,则每次迭代都会构造该函数。在循环外声明函数并在循环内调用它。
或者可以为jshint-ignore添加loopfunc:true标记 当我把它写成“.addEventListener('click',pushToArray(this.value))”时,它不起作用。那么正确的写作方式是什么呢?