2019年3月14日 星期四

[Back To Basic] Javascript - 嚴格模式(strict)

若使用 "use strict";
  • 定義這份javascript的程式碼要用嚴格模式執行
  • ECMA Script 5 的directive
  • IE9以後皆支援,IE9以前皆忽略
  • 只是一串字串,並不是語法,所以舊版本的瀏覽器不會出錯
  • 可以幫助我們寫出更乾淨的程式碼
  • 必須宣告在script的最前面
  • 全域影響整份script

使用嚴格模式的好處

  • 幫助我們寫出更安全的程式碼
  • 將以前接受的錯誤語法更改為實際錯誤

在嚴格模式中不被允許的寫法

  • 使用沒有宣告的變數
x = 31;
user = {name: 'Shawn', age: 18}; // object也是變數,必須宣告
  • 刪除變數
var pi = 3.14;
delete pi;

function myFunction(a, b){ }
delete myFunction;
  • 參數名稱重複
function(a, a){ }
  • 不允許8進位數字文字
var x = 010;
  • 不允許8進位轉義字符
var x = "\010";
  • 不允許唯讀的屬性被寫入
var constantCollection = {};
Object.defineProperty(constantCollection, "pi", { value: 3.14, writable: false });
constantCollection.pi = 3.14159;
  • 不允許 get only 的屬性被寫入
var obj = {
    get x() {
        return 0
    }
};
obj.x = 3.14;
  • eval 不可用來當變數
var eval = 0;
  • arguments 不可用來當變數
var arguments = 0;
  • 禁止使用with語法
with (Math) { x = sin(2) };
  • 禁止使用eval() 函式
eval("var name = 'Shawn'");
  • 保留字也別用來當變數

沒有留言:

張貼留言