【发布时间】:2016-09-10 04:57:08
【问题描述】:
怎么样
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();
}
但由于我在while循环内用stack.pop()修改stack,我猜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();
}
【问题讨论】:
-
嗯,倒数第二个例子在语法上是不正确的,所以改用
for循环?我不清楚问题是什么。使用任何有效的代码? -
@Jamgreen。我试了一下。让我知道你的想法。
-
@Jamgreen “但只定义一次”是什么意思? ?
-
我很困惑。
stack是否包含函数?那么stack.peek()返回一个函数?那么peek是一个函数吗?那样的话,peek in ops怎么会有意义? -
“对不起,我已经创建了
Array.prototype.peek = () => this[this.length - 1]。” 注意,var stack = [1,2,3]; stack.peek()在这里返回了3,这里使用了function关键字。Array.prototype.peek = function() { return this[this.length - 1]}。var stack = [1,2,3]; Array.prototype.peek = () => this[this.length - 1]; stack.peek()使用箭头函数返回undefined。
标签: javascript while-loop