错误信息、try_catch、严格模式

JS错误信息类型

1、SyntaxError 语法错误
变量名不规范

var 1 = 1;

关键字赋值

new = 7;//报错

基本语法错误

var f = 0

2、ReferenceeError 引用错误
变量或者函数未被声明
给无法被赋值的对象赋值的时候

var a = 1 = 2;

3、RangeError 范围错误
数组长度赋值为负数

var arr = [1,2,3];
arr.length = -1;
console.log(arr);

对象方法参数超出可行范围

var num = new Number(66.66);
console.log(num.toEixed(-1));

4、 TypeError 类型错误
调用不存在的方法

123();
var obj = {};
obj.say();

实列化原始值 实例化的是构造函数

var a = new 'string';// TypeError

5、URIError URI错误
URI: UNIFORM RESOURCE INDENTIFIRE 统一资源标识符
URL: UNIFORM RESOIRCE LOCATOR 统一资源定位符
URN: UNIFORM RESOURCE NAME 统一资源名称

encodeURI中文转化成中文字符编码
decodeURI中文字符编码转化成中文

var url = 'http://www.baidu.com?name = '张三'';
var newUrl = encodeURI(url);
var str = decodeURI('%fd5df%');//不符合常规的URI无法解析

在这里插入图片描述
6、EvalError eval函数执行错误 eval() 代码写成字符串 放到eval里面就能执行

  var jsonData = '[' +
            '{' +
            '"name":"zadd"'
            + '},' +
        '{' +
            '"age":"xdd"'
            + '},'+
        '{' +
            '"fg":"dddd"'
            + '}'
            + ']';
        console.log(jsonData);
        var data = eval('(' + jsonData + ')');
        console.log(data);//转成了可遍历对象

手动抛出错误 try catch finally throw
JSON字符串JSON对象里面是不能有方法的

 var jsonStr = '';
    try{
        if(jsonStr == ''){
            throw 'JSON字符串为空';
        }
        console.log('正常执行1');
        console.log(a);
        console.log('正常执行2');
    } catch(e){
        console.log(e,e.name,e.message)
    }finally{
        console.log('正常执行3');
    }

前面六种错误类型都分别对应了六个不同的构造函数,可以自定义Error

new Error();
new RangeError();

ES5严格模 式
ECMAScript JavaScript 的语法规范、方法规范
IE9及以下,不支持严格模式
严格模式下,变量必须要声明 也不能写a = b= 1

//一般不在全局写'use strict'
function test(){
'use strict';
}
with();

with 可以改变作用域, 严格模式下报错

 var a = 1;
        var obj = {
            a: 2
        }
        // 
        function test(){
            var a = 3;
            with(test){
                console.log(a);//3
            }
            with(obj){
                console.log(a);//2
            }
            with(window){
                console.log(a);//1
            }
        }
        test();
//严格模式下函数内部的this是不指向window的 打印时undefined
'use strict'
function test(){
console.log(this);
}
test();

函数的参数不能重复,对象属性名也不能重复

'use strict'
function test(a, a){
console.log(a);
}
test(1,2);
var obj = {
		a: 1,
		a: 2,
		a: 3
		}
 var a = 1;
        var obj = {
            a: 2,
        }
        function test(){
            var a = 3;
            //with可以改变作用域 严格模式下不能使用,会报错
            with(test){
                console.log(a)//3
            }
        }
        test();

严格模式下eval是有自己的作用域的

'use strict'
eval('var a = 1;console.log(a)');
console.log(a);//严格模式下会报错

callee caller严格模式下不能用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值