[英]How to concatenate operators in javascript?
我正在编写next_previous()
函数用于分页目的,我有for循环,它从0移动到给定长度。 我想对0到10和10到0两种情况使用相同的循环。
for (var i = 0; i < 10; i++) {
}
for (var i = 10; i > 0; i--) {
}
在一个循环中使用这两种情况我正在做这样的事情但不起作用
var i = 0; a = '', b = '';
if(somevar === true){
i = 0 , a = '++', var b = '<';
}else{
i = 10 , a = '--', var b = '>';
}
for (i; i +b+ 0; i+a) {
}
现在的问题是javascript不允许连接这种方式,我该怎么做到这一点?
尝试这种方法,用于逻辑部分(增量和条件)功能。
ES6
let i = 0; let a; let b; let count = 0; let somevar = true; if(somevar) { i = 0; count = 10; a = () => i++; b = () => i < count; } else { i = 10; count = 0; a = () => i--; b = () => i > count; } for (; b(); a()) { console.log(i); }
ES5
var i = 0; var a; var b; var count = 0; var somevar = true; if(somevar) { i = 0; count = 10; a = function() { i++; }; b = function() { return i < count; }; } else { i = 10; count = 0; a = function() { i--; }; b = function() { return i > count; }; } for (; b(); a()) { console.log(i); }
看起来你正在寻找一个eval
解决方案,但这并不是人们如何解决这个问题。 而是去寻找功能设计:
function forward(cb) {
for (var i = 0; i < 10; i++) cb(i);
}
function backward(cb) {
for (var i = 10; i > 0; i--) cb(i);
}
const loop = somevar ? forward : backward;
loop(i => {
…
});
这个答案是@ BiswajitPanday答案的一个不太懒的版本。 我本来会编辑他的答案,但我意识到自问题发布以来已经过了一周,所以对他的回答进行编辑不会有成效,因为OP不会得到通知
eval
解决方案:
function loopFoo(backwardsDirection, callback) { if(backwardsDirection === true) { var i = 10, b = '>', c = 0, a = '--'; } else { var i = 0, b = '<', c = 10, a = '++'; } for (i; eval("i" + b + c); eval("i" + a)) { callback(i); } } console.log("Forwards:"); loopFoo(false, console.log); console.log("Backwards:"); loopFoo(true, console.log); console.log("Forwards:"); loopFoo(false, console.log);
那个函数( eval
)通常是不受欢迎的,我会选择@ Bergi的解决方案,如果没有,@ Suren的,如果不是他的,我的解决方案。
只需使用eval(i + b + 10)而不是i + b + 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.