1.我是新手,刚学javascript,遇到break的作用范围问题。
2
<script>
var degF=[212,"string data",-459.67];
var degC=[];
var lt;
for(lt=0;lt<=2;lt++)
{
if (isNaN(degF[lt]))
{
alert("Data'"+degF[lt]+"'at array index"+lt+"is invalid");
break;
}
degC[lt]=5/9*(degF[lt]-32);
document.write("degF"+degF[lt]+"is"+"degC"+degC[lt]+"<br>")
}
</script>
3.问题:根据给我程序的教材解释,break终止了for循环,我怎么也弄不懂。根据我的理解:这个位置的break只是终止了if后{ }中要执行的语句而已,因为它只是for中嵌套的if语句中的部分语句,从位置上看并没有终止lt继续递增的作用啊?被嵌套的子部分可以终止父级?
不过,我也问了我的一个同学,-他反问我:如果按你的思路要把break放在哪呢?-我思考半天发觉放在其他任何地方都不对,只有原位置是对的。
不过,虽然实践后觉得是对的,但从理论上我还是不能认同这个位置的break是正确的。
希望前辈们帮我,谢~
PS:由此我还想问
1. break、continue这类语句的作用范围怎么界定?
2.我的同学说,break是全局响应,直接跳出总程序。我不认同他,我认为break只能终止一定范围。对吗?
break
只会跳出for, while, switch
等这些循环,而if
只是条件判断,里面的函数体会取决于条件执行或不执行,你困惑的地方是
为什么我在if里面break,却跳出的不是当前的if,反而是外面的for循环
,那就牵扯到break
方法的作用了,break
方法用于跳出循环,举个例子全班50
个人,点到有一个人没来就不继续点名了,点到有一个人没来
就是if
的条件,那么不继续点名
就是跳出点名
这个循环break
和continue
没有什么全局响应的说法,只针对当前循环,如果说不是在循环中使用,那么就是对这个方法的错误理解,并且不会生效===========================================================================================
回答二
如果有大量嵌套,
break
也只会跳出当前循环,比如两个for
循环,那么最里面的for
循环中的break
只会跳出最里面的for
循环,外面的for
循环继续遍历;你说
while
或者switch
更容易理解,只是他们把判断包含进去了而已,switch
每次判断使用的是case
,那么在case
中break
终止的也是整个switch
而不是case
不是吗?至于while
每次开头都会进行判断,原理和for + if
是一个道理,其实你要这样想break
和if
没有关系,我完全可以这样写,但是这样一进去就会跳出循环,失去了意义,我们写代码是为了执行解决需求的逻辑break
的用法和语言无关,不只是javascript
是这样用,所有支持break
语法的语法都是这个用法break
的格式就是要用在循环体中,用于跳出循环,至于你说的格式也许是你用的不多才这么想,你这个问题就像再问if这个方法有具体格式吗?应该写在哪个地方?
,代码是人写的,首先你需要符合语言规范,其次满足你的代码逻辑,再上一层就是重构你的代码,使其变得优雅