下面有两个代码示例。它们相同,除了我在开始时更改w
的值。在任一示例中,m
都有一个值。我要做的就是设置x = m
。为什么我可以在第一个而不是第二个中这样做?我正在Chrome(68.0.3440.84)的控制台中对此进行测试
这有效(m = 100 | x = 100)
var c = [],
w="word",
x = 0;
for (l=0; l<w.length; l++){
c.push(w.charCodeAt(l));
}
for (i in c) {
if (c.length > 0) {
var m = c[1];
if (m > Math.min(m, c[i])) {
m = Math.min(m, c[i]);
x = m;
console.log(x);
}
}
}
这不起作用(m = 97 | x = 0):
var c = [],
w="cancel",
x = 0;
for (l=0; l<w.length; l++){
c.push(w.charCodeAt(l));
}
for (i in c) {
if (c.length > 0) {
var m = c[1];
if (m > Math.min(m, c[i])) {
m = Math.min(m, c[i]);
x = m; //why cant I set this?
console.log(x);
}
}
}
我还想做更多的事情,但是在解决这个学习问题的过程中,我一直无法可靠地设置此变量x
,并且试图找出原因。
答案 0 :(得分:0)
这是因为从未满足if (m > Math.min(m, c[i]))
条件。在您的示例中,m
和Math.min(m, c[i])
具有相同的值。用>
代替>=
似乎可以解决您的问题。或将console.log
移到if
语句之外-取决于您实际要实现的目标。
var c = [],
w = "cancel",
x = 0;
for (l = 0; l < w.length; l++) {
c.push(w.charCodeAt(l));
}
for (i in c) {
if (c.length > 0) {
var m = c[1];
if (m >= Math.min(m, c[i])) { // because m > Math.min(m, c[i]) would return false
m = Math.min(m, c[i]);
x = m
console.log(x);
}
}
}