这给出了正确答案:
<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>
为什么?
答案 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)
在您的第一个代码示例中sita
在for
之前和之前的if语句中定义。我认为您的第二个定义var sita = numbers[i]
应该看起来像sita = numbers[i]
。
在您的第二个代码示例中 sita未在使用前定义 - 仅在您的if中。因此sita
未定义,而您的if条件将无法签出且将不会打印任何内容。
答案 2 :(得分:0)
说你是翻译。你已经达到if(numbers[i]>sita){
这一行你会怎么想,sita
变量有什么价值?
您必须在使用变量之前定义变量(如第一个示例中所示)。否则翻译人员就不会知道这个词是什么意思。