美文网首页
fix前端js error日记

fix前端js error日记

作者: 牧羊童鞋 | 来源:发表于2017-10-11 21:33 被阅读32次

    问题--编码习惯

    在查看和修复js error的时候,能发现一些细节的问题,比如一些编码习惯。我不知道大家是否写过这样的代码,判断window(global)下的某一个变量是否存在,我们可能会写成这样:

    if(wx !==  undefined){
        // balabala
    }
    

    而99%的情况下wx变量都是存在的,所以你自己测试都会很正常。但是如果这个变量是依赖外部环境,如浏览器等,就有可能会存在兼容性以及意外情况,导致这个变量不存在。这个时候如果这段代码是同步的,那就会导致后面的代码都挂了,就有可能这个用户无法正常使用我们的服务了。

    这也说明了监控的重要意义,如果没有监控、同时又没有用户上报,这个错误就会一直存在。

    其实正确的写法是

    if( window.wx !==  undefined ){
        // balabala
    }
    

    原因就是我们直接使用未定义的变量会报错,但是使用未定义的属性就不会了。

    还有一种解决方式就是typeof,这样也可以避免。

    if( typeof abc !== "undefined" ){
        // balabala
    }
    

    但是在ios 10版本下的Mobile Safari UI/WKWebView下,有一个例外,那就是localStorage,即使你使用typeof,也会报错。

    if( typeof localStorage !== "undefined" ){ // 这一行在ios 10下safari都会可能报错
        // balabala
    }
    

    这个时候就要对整个localStorage的操作try..catch住,这也是一个比较容易忽略的地方,如果没有监控你是真的想不到这个的 。

    相关文章

      网友评论

          本文标题:fix前端js error日记

          本文链接:https://www.haomeiwen.com/subject/wabwyxtx.html