try……catch……和 ES5的嚴格模式

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 屬性對應六種信息:

  1. EvalError:eval()的使用與定義不一致

  2. RangeError:數值越界

  3. ReferenceError:非法或不能識別的引用數值

  4. SyntaxError:發生語法解析錯誤

  5. TypeError:操作數類型錯誤

  6. 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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章