渡一 16-1 try..catch,es5標準模式
阿新 • • 發佈:2021-10-17
//在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 } }