繁体   English   中英

如何在javascript中连接运算符?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM