变量定义,不同的输出
variable definition, different output
这给出了正确的答案:
<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>
为什么?
正如其他人所提到的,sita在第二个例子中是未定义的。
在你的特定情况下,与未定义进行较大或较小的比较总是会产生错误,无论你与什么进行比较。
所以,你的表达转化为
if (false)
编辑:我完全错过了第二个例子的第5行,因为很多人写变量sita是未定义的,而实际上它的值是未定义。因此,启用严格模式在这里不会有多大好处。无论如何,仅供参考,我的原始帖子:
为了避免那样的错误,你应该总是(或者如果不总是,那么至少在调试时)使用严格模式(自ECMAScript 5)。
"use strict";
链接:什么是";使用严格的";在JavaScript中执行,其背后的原因是什么?
假设您是口译员。你已经到达了if(numbers[i]>sita){
行,你会怎么想,sita
变量的值是多少?
在使用变量之前,您必须定义它们(就像第一个示例中一样)。否则口译员就不知道那个词是什么意思。
在您的第一个代码示例中,sita
是在for
之前和if语句中定义的。我假设您的第二个定义var sita = numbers[i]
应该看起来像sita = numbers[i]
。
在您的第二个代码示例中,sita在使用前是不定义的-仅在if中定义。因此sita
是未定义,并且您的if条件不会检出,将不打印任何内容。
相关文章:
- Node.js/Express未输出console.log,highcharts.js给出未定义的错误
- jQuery将地理补全输出到自定义字段
- JS函数只返回未定义的数据,但alert输出正确的数据
- '未定义'当需要模块时输出
- 当我从有界数据派生输出时,为什么我的自定义指令不更新
- 具有中文字符但输出的JSON.parse数据变为“;未定义”;
- 为什么我的输出未定义
- IE9中的有效输出,但IE7/IE8中的未定义输出
- 为自定义 Javascript 处理器输出创建源映射
- 当在 Javascript 中使用许多 for 循环时,输出是未定义的
- 它无法正常工作,它输出未定义
- 使用 PHP 输出的 Javascript 数组时出现未定义错误
- 为什么简码输出中的值“未定义” - tinyMCE
- Vue.js 使用 Vuex 和自定义组件,@click方法输出未定义
- 为什么 javascript 对象在循环遍历数组时输出为“未定义”
- 为什么我得到未定义的输出Javascript
- 如何仅使用 JavaScript 的 stringify() 方法在第一级自定义 JSON 输出
- 对象未定义/HTML使用jQuery输出
- 在轨道中自定义javascript_include_tag输出
- 单选按钮的自定义iCheck设计可防止单击时输出总价