关于视频中try{...;break;}catch{}

关于视频中try{...;break;}catch{}

for (var i = 0; i < len; i++) {

try{

// 创建XMLHttpRequest对象

xhr=new ActiveXObject(xhrArr[i]);

break;

}catch(ex){

//TODO handle the exception

}

}

这里,当i=0的时候,xhr=new ActiveXObject(xhrArr[0]);如果ActiveXObject支持这个版本的话,就创建成功,并且赋值给xhr,下一行代码break直接跳出循环,这个我可以理解,但当不支持这个版本,new ActiveXObject(xhrArr[0])是什么?猜想一,undefined,那这样的话xhr被赋值成了undefined,然后break,结束循环,这解释不通。猜想二,报错,转到catch,然后继续i=1。这样理解对吗

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,明白同学的意思了,可以理解成抛出错误,执行catch,跳过break,执行下一次循环。

祝学习愉快!

好帮手慕星星 2020-04-26 11:56:07

同学你好,是这样运行的,可以测试下面的例子

 var arr = ["1", 2];
        for (var i = 0; i < arr.length; i++) {
            try {
                if (typeof arr[i] === 'number') {
                    console.log(arr[i]);
                    break;
                }
                throw 'error'
            } catch (e) {
                console.log(e)
            }
        }

判断数组中每项的类型,如果是数字类型就输出,然后停止,不是就执行catch(有抛出的话就会显示)。

自己测试下,祝学习愉快~

  • 提问者 王文辉 #1
    对的,这个和我理解的try catch语句一样,但“当不支持当前版本的时候,不会执行try语句,”我的理解是try应该没有这么智能,应该是。xhr=new ActiveXObject(xhrArr[i]);不支持当前版本的时候,会报错,直接转到catch语句,跳过break,然后执行下一次循环
    2020-04-26 15:33:26
好帮手慕星星 2020-04-26 11:26:18

同学你好,当不支持当前版本的时候,不会执行try语句,new ActiveXObject(xhrArr[0])也就没有值,无法输出;执行的是catch语句。然后再接着判断第二个版本,后面以此类推。

祝学习愉快!

  • 提问者 王文辉 #1
    try是这么运行的吗,根据里面的内容能否运行决定try能否执行,感觉没有这么智能啊
    2020-04-26 11:41:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师