-1

这给出了正确答案:

<script type="text/javascript">
var numbers=[67,56,45,34,78,54,67,90,43,56,78,90,23,45,67,89,54,1];
var sita=0;
for(i=0;i<numbers.length;i++){
    if(numbers[i]>sita){
        var sita=numbers[i];
        document.write(sita+" ");
        }
    }
</script>

这不起作用:

<script type="text/javascript">
var numbers=[67,56,45,34,78,54,67,90,43,56,78,90,23,45,67,89,54,1];
for(i=0;i<numbers.length;i++){
    if(numbers[i]>sita){
        var sita=numbers[i];
        document.write(sita+" ");
        }
    }
</script>

为什么?

4

3 回答 3

2

正如其他人提到的 sita 在第二个示例中未定义。

与 undefined 进行较大或较小的比较 - 在​​您的特定情况下 - 无论您比较什么,总是会产生错误。

所以,你的表达转化为

if (false)

编辑: 我完全错过了第二个例子的第 5 行,因为很多人写到变量 sita 是未定义的,而实际上它的值是未定义的。所以启用严格模式在这里不会有多大好处。无论如何,仅供参考,我的原始帖子:

为了避免这样的错误,你应该总是(或者如果不总是那么至少在调试时)使用严格模式(从 ECMAScript 5 开始可用)。

"use strict";

链接: “use strict”在 JavaScript 中做了什么,背后的原因是什么?

于 2013-07-26T07:59:19.473 回答
0

在您的第一个代码示例中,在if 语句sita之前for 和内部定义。我会假设你的第二个定义var sita = numbers[i]应该看起来像sita = numbers[i].

在您的第二个代码示例中,在使用前未定义 sita - 仅在您的 if 中。所以sita未定义的,你的 if 条件不会检查也不会打印任何内容

于 2013-07-26T07:51:42.797 回答
0

假设你是口译员。并且您已经达到了if(numbers[i]>sita){您的想法,sita变量的值是什么?

您必须在使用它们之前定义变量(如第一个示例中所示)。否则口译员将不知道该词是什么意思。

于 2013-07-26T07:53:20.113 回答