变量定义,不同的输出

时间:2013-07-26 07:48:33

标签: javascript variables

这给出了正确答案:

<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>

为什么?

3 个答案:

答案 0 :(得分:2)

正如其他人所提到的,sita在第二个例子中是未定义的。

对未定义的更大或更小的比较 - 在​​你的特定情况下 - 总是产生错误,无论你比较什么。

所以,你的表达式转换为

if (false)

修改 我完全错过了第二个例子的第5行,因为有很多人写道,变量sita是未定义的,实际上它的值是未定义的。因此,启用严格模式在这里不会有太大作用。无论如何,仅供参考,我的原帖:

  

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

"use strict";
     

链接:   What does "use strict" do in JavaScript, and what is the reasoning behind it?

答案 1 :(得分:0)

在您的第一个代码示例中sitafor 之前和之前的if语句中定义。我认为您的第二个定义var sita = numbers[i]应该看起来像sita = numbers[i]

在您的第二个代码示例中 sita未在使用前定义 - 仅在您的if中。因此sita 未定义,而您的if条件将无法签出将不会打印任何内容

答案 2 :(得分:0)

说你是翻译。你已经达到if(numbers[i]>sita){这一行你会怎么想,sita变量有什么价值?

您必须在使用变量之前定义变量(如第一个示例中所示)。否则翻译人员就不会知道这个词是什么意思。