Javascript漂流记(上)__try..catch、es5标准模式

版权声明:本文为博主原创,转载请附上博文链接。 https://blog.csdn.net/AquamanTrident/article/details/90668681

一、try..catch

        try{
            console.log('a');
            console.log(b);//出错,不抛出错误,try里后续代码不执行
            console.log('c');//不执行
        }catch(e){
             console.log(e.name + ":" + e.message);//try里不出错,catch里不执行。try里出错,catch会捕捉到系统传回的错误对象e(e.name    e.message)
        }
        console.log('d');

        六种错误类型:
               EvalError:eval()的使用与定义不一致。eval()不允许使用
               RangeError:数值越界
               ReferenceError:引用错误(比如变量没声明就使用)
               SyntaxError:语法解析错误
               TypeError:操作数类型错误
               URIError:URI处理函数使用不当

二、es5严格模式(针对es3.0和es5.0产生冲突的部分)

        "use strict"; 写在全局或局部逻辑的最顶端
        为啥启动es5.0严格模式要写成字符串的样子,至少在老版本浏览器不会报错

       es5严格模式下:
            不允许使用arguments.callee和function.caller
            不允许用with
            变量赋值前必须声明!!!暗示全局变量消停了。
            局部this必须被赋值,赋什么就是什么!!!
            拒绝重复属性和参数(重复参数报错,重复属性暂时不报错)
            eval()不能用

       with:可以改变作用域链。让里面的代码作用域链的最顶端变成with括号里的。改变作用域让运行非常慢。

        var obj = {name : 'obj'};
        var name = 'window';
        function test(){
            var name = 'scope';
            with(obj){
                console.log(name);
            }
        }
        test();//obj

      with(org.department1.xxx){},结合前面命名空间使用,简化代码
      with(document){write('a');}
      eval('console.log('a')'); 能把字符串当代码执行,还能改变作用域,不让用

以上内容属二哥原创,整理自 "渡一教育Javascript课程" ,一个值得推荐的"渡一教育"。

猜你喜欢

转载自blog.csdn.net/AquamanTrident/article/details/90668681
今日推荐