JS嚴格模式和非嚴格模式的區別


嚴格模式和非嚴格模式的區別

//f1.js
'use strice'; //整個js文件都是嚴格模式下執行的

var n = 1;
var foo = function(){...};
//...
var n = 1;
var foo = function(){
	'use strict';
	//在foo函數內是嚴格模式
	//some code...
}
  1. 嚴格模式下, delete運算符后跟隨非法標識符(即delete 不存在的標識符),會拋出語法錯誤; 非嚴格模式下,會靜默失敗並返回false
  2. 嚴格模式中,對象直接量中定義同名屬性會拋出語法錯誤; 非嚴格模式不會報錯
  3. 嚴格模式中,函數形參存在同名的,拋出錯誤; 非嚴格模式不會
  4. 嚴格模式不允許八進制整數直接量(如:023)
  5. 嚴格模式中,arguments對象是傳入函數內實參列表的靜態副本;非嚴格模式下,arguments對象里的元素和對應的實參是指向同一個值的引用
  6. 嚴格模式中 eval和arguments當做關鍵字,它們不能被賦值和用作變量聲明
  7. 嚴格模式會限制對調用棧的檢測能力,訪問arguments.callee.caller會拋出異常
  8. **嚴格模式 變量必須先聲明,直接給變量賦值,不會隱式創建全局變量,不能用with, **
  9. 嚴格模式中 call apply傳入null undefined保持原樣不被轉換為window


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM