try……catch……和 ES5的嚴格模式
try……catch……
<script type = "text/javascript">
try{
//正在執行的代碼,如果出錯會終止執行,轉到執行catch中的代碼
console.log('a');
console.log(b);
console.log('c');
}catch(e){
// e 代表捕捉到的錯誤對象Error,名稱可隨意起 如err、error等,它有 name 和 message 屬性。
//只有try中的代碼出現錯誤時,才跳進catch中執行。沒出現錯誤catch中的代碼不會執行。
console.log(e.name + " : " + e.message);
}
console.log('d');
</script>
錯誤對象Error的 name 屬性對應六種信息:
-
EvalError:eval()的使用與定義不一致
-
RangeError:數值越界
-
ReferenceError:非法或不能識別的引用數值
-
SyntaxError:發生語法解析錯誤
-
TypeError:操作數類型錯誤
-
URIError:URI處理函數使用不當
ES5 嚴格模式
瀏覽器解釋方法的時候 一般規則是基於ES3的方法和ES5的新增方法,如果ES3和ES5有相同的方法時,默認使用ES3的方法。
如果需要使用ES5的方法時,則需要啓用 ES5 嚴格模式。
啓用 ES5 嚴格模式
在全局代碼最上端寫 “use strict”,代表所有代碼遵循 ES5 嚴格模式,或在函數內部第一行寫 “use strict”,函數內部遵循 ES5 嚴格模式。
嚴格模式不在支持 with、arguments.callee、func.caller、常量賦值前必須聲明、局部this
必須被賦值(call,unll,undefined都可以)、不允許重複屬性和參數。
with 和 eval 舉例
<script type = "text/javascript">
var org ={
department_one:{
zhangsan:{
name:"abc",
age:123
}
},
department_two:{
lisi:{
name:"efg",
age:345
}
}
}
var zs = org.department_one.zhangsan;
var ls = org.department_two.lisi;
console.log(zs.name);
console.log(ls.name);
//使用 with 操作命名空間中的變量。
with(org.department_one.zhangsan){
console.log(name);
}
with(org.department_two.lisi){
console.log(name);
}
//使用 eval 執行代碼。
eval("x=10;y=20;document.write(x*y)");
var ev = eval("2+2");
console.log(ev);
document.write(eval("2+2"));
var x=10;
document.write(eval(x+17));
</script>
cument.write(eval("2+2"));
var x=10;
document.write(eval(x+17));
</script>