JSlint - 在 for 循环中使函数与评估函数
JSlint - make function within for loop vs. evaluating function
我有一个看起来像这样的函数:
function strip(o) {
for (var i in o) {
var test = basic.arr.some(function(x) {return x === i} );
//JSlint -- don't make functions within loop
if (test)
delete o[i];
}
return o;
}
代码有效,JSlint 抱怨。
我知道使用循环的重复表达式定义多个函数最终会创建多个函数,每个函数都保留最后一个重复表达式的值(因为每个循环没有不同的范围);
但在这种情况下,由于我正在立即评估函数,我想不出i
的实际值会发生变化的情况;
我已经解决了使用 forEach 方法的问题,但想了解为什么这最终会导致问题。
小提琴
通过将匿名函数声明包含在 for (var i in o) {
中,您每次迭代时都会重新定义它,而不仅仅是一次,无论它是否"立即调用"——我会指出您对重新定义的疏忽是您想要从代码中删除该结构的原因。
所以你想要么摆脱for
要么需要更早地定义函数。我将接受 JSLint 的"更多"建议,并摆脱for
。
这 JSLint.com 棉绒是这样的:
/*jslint white:true, devel:true */
var obj = {
a: true,
b: true,
c: true
};
var basic ={
arr: ['a', 'b']
};
function strip(o) {
"use strict";
var test;
Object.keys(o).forEach(function (i) {
test = basic.arr.some(function (x) { return x === i; });
if (test) {
delete o[i];
}
});
return o;
}
strip(obj);
console.log(obj);
相关文章:
- 基本的Javascript/jQuery数学游戏:为什么可以't我第二次运行此函数时进行评估
- 使用评估函数调用 javascript 函数作为文本框 Asp.net 参数
- 评估作为参数传递给 Google 电子表格中自定义函数的条件
- JavaScript 函数同时评估自身和调用自身
- CasperJS评估函数第二次不工作
- 使用Rhino从已评估的JS中获取函数名及其参数
- TypeError: undefined 不是一个函数(评估 'document.getsElementsByC
- JavaScript 评估函数中的电源
- 从 onclick 调用函数,为什么我的参数被评估为 true
- 评估和函数作用域
- 如何将函数调用转换为首先评估输入的字符串
- TypeError: 'undefined' 不是一个函数(评估 'mockBackend.ex
- 在Javascript中,有没有办法评估一个变量,该变量可能是函数,也可能不是函数
- 评估函数的目的是什么
- 是 Nashorn 中的一个评估函数,可从不同的线程重用
- 我想返回一个函数并在调用模块中对其进行评估
- TypeError: undefined' 不是一个函数(评估 'myAudio.play()'
- Javascript函数评估
- javascript匿名函数评估习惯用法
- Javascript函数评估为变量