在while循环中定义变量

果酱绿

怎么

while (
  stack.peek() in ops &&
  p(stack.peek()) >= 10
) {
  str += stack.pop();
}

重写,所以.peek()每次循环运行时我都调用,但是只定义一次?

我考虑过

const peek = stack.peek();
while (
  peek in ops &&
  p(peek) >= 10
) {
  str += stack.pop();
}

但因为我修改stackstack.pop()while循环中,我猜的价值stack.peek()是不断变化的每一次,所以我想我必须重新定义循环内的变量,但

let peek = stack.peek();
while (
  peek in ops &&
  p(peek) >= 10
) {
  str += stack.pop();
  peek = stack.peek();
}

也似乎有点不对,所以应该像

while (
  let peek = stack.peek() &&
  peek in ops &&
  p(peek) >= 10
) {
  str += stack.pop();
}

或者

for (
  let peek = stack.peek();
  peek in ops && p(peek) >= 10;
  peek = stack.peek()
) {
  str += stack.pop();
}
用户名

考虑while (true)与一起使用break

while (true) {
  const peek = stack.peek();
  if (!(peek in ops) || p(peek) < 10) break;
  str += stack.pop();
}

从理论上讲,您也可以这样做:

while (
  (peek => peek in ops && p(peek) >= 10)(stack.peek())
) {
  str += stack.pop();
}

但这很丑。大致相当于写

function pop(stack) {
  const peek = stack.peek();
  return peek in ops && p(peek) >= 10;
}

while(pop(stack)) str += stack.pop();

for环是不是一个坏主意要么,并且可以写成:

for (let peek; peek = stack.peek(), peek in ops && p(peek) >= 10; ) {
  str += stack.pop();
}

再次避免了重复调用stack.peek()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章