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

  1. 嚴格模式中,對象直接量中定義同名屬性會拋出語法錯誤; 非嚴格模式不會報錯

  2. 嚴格模式中,函數形參存在同名的,拋出錯誤; 非嚴格模式不會

  3. 嚴格模式不允許八進制整數直接量(如:023)

  4. 嚴格模式中,arguments對象是傳入函數內實參列表的靜態副本;非嚴格模式下,arguments對象里的元素和對應的實參是指向同一個值的引用

  5. 嚴格模式中 eval和arguments當做關鍵字,它們不能被賦值和用作變量聲明

  6. 嚴格模式會限制對調用棧的檢測能力,訪問arguments.callee.caller會拋出異常

  7. 嚴格模式 變量必須先聲明,直接給變量賦值,不會隱式創建全局變量,不能用with,

  8. 嚴格模式中 call apply傳入null undefined保持原樣不被轉換為window


免責聲明!

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



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