【前端大概一分钟】日常工作总结

如何抛出、捕获全局异常

<script>
    // 捕获全局错误方法要写在前面,否则异常会中断js执行,导致无法捕获
    window.onerror = function (event) {
        console.log('全局错误');
        return true;
    };
    var foo = function () {
        try {
            // 使用异步方法抛出全局错误,比如 promise、async/await、settimeout...
            setTimeout(function () { throw new Error( 'errorMessage') }, 0);
        } catch (err) {
            console.log('局部错误')
        } finally {
            console.log('无法捕获全局错误')
        }
    };
    foo();
</script>
复制代码

详情可查阅hawx1993大神的回答

使用 new Image() 避免跨域

有一个需要检测网速的需求,最开始是使用ajax请求,由于图片不在同一服务器需要处理跨域,因此使用new Image()的方法来避免跨域。

<script>
    var handleRequest = function() {
        var img = new Image();
        // 图片大小
        var imgSize = 1000;
        var startTime = new Date();
        
        img.onload = function() {
            var endTime = new Date();
            // 计算下载时间
            var duration = endTime - startTime;
            // 计算网速
            console.log(imgSize / duration);
        }
        // 发送请求
        img.src = 'http://....';
    }
</script>
复制代码

引用 MDN 对 CORS 的判定

出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非使用CORS头文件。

new Image( ) 等价于在 html 页面添加 <img src="" alt="" /> 标签,并不是通过 js 脚本操作,从而避免了跨域。

给数组添加自定义属性

js 中的 Array 是对 Object 的一种抽象,因此可以对数组定义自定义属性。

添加自定义的属性不会导致length属性自增,这在某些情况下可以用来为数组添加自定义的数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值