1. 程式人生 > 其它 >渡一 16-1 try..catch,es5標準模式

渡一 16-1 try..catch,es5標準模式

//在try裡面發生的錯誤,不會執行錯誤後的try裡的程式碼
//try後面的程式碼繼續執行;
try{
    console.log("a");
    console.log(b);
    console.log("a");
}catch(e){
    console.log(e);
}
console.log(b)

output:a d

錯誤型別
EvalError:eval()的使用與定義不一致
RangeError:數值越界
ReferenceRrror:非法或不能識別的引用數值
SyntaxError:語法解析錯誤
TypeError:運算元型別錯誤
URLError:URL處理函式使用不當

es5嚴格模式

兩種用法
全域性嚴格模式
區域性函式內嚴格模式(推薦)
格式 "use strict"
不支援with,arguments.callee,function.caller;
變數賦值前必須宣告,區域性this必須被賦值(Person.call(null/undefined)賦值什麼就是什麼),拒絕重複屬性和引數

function demo(){
    console.log(arguments.callee);
}
function test(){
    "use strict";
    console.log(arguments.callee); //報錯
}
test();
"use strict";
function Test(){
    console.log(this);
}
Test.call(123); //這裡會把123變成Number(123);
var org = {
    dp1:{
        jc:{
            name:"abc",
            age:123
        },
        deng:{
            name:"xiaodeng",
            age:234
        }
    },
    dp2:{

    }
}
with(org.dp1.jc){
    console.log(name) 
//abc 這裡的作用域是with定義中的 } with(document){ write("a"); }
var obj = {
    name:"obj";
}

var name = "window";

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