javascript嚴格模式下的8點規則

 【做用】chrome

  [1]消除js語法的一些不合理、不嚴謹、不安全問題,減小怪異行爲並保證代碼運行安全瀏覽器

  [2]提升編譯器效率,增長運行速度安全

 

【使用】函數

  [1]整個腳本啓用嚴格模式,在頂部執行:"use strict";this

  [2]在指定函數中執行嚴格模式,在函數體第一行:"use strict"spa

  [3]不支持strict模式的瀏覽器把"use strict"當作一個字符串語句執行,支持strict模式的瀏覽器將開啓strict模式code

  [4]支持嚴格模式的瀏覽器包括IE10+、Firefox4+、safari12+、opera12+、chrome對象

 

【規則】
【1】變量
  [a]不容許意外建立全局變量blog

"use strict";
message = 'hello world!';

  [b]不能對變量調用delete操做符字符串

"use strict";
var color = 'red';
delete color;

 

【2】對象
  [a]不能爲只讀屬性賦值

"use strict";
var person = {
    name:'cook'
};
Object.defineProperty(person,'name',{
    writable: false
});
person.name = 'Nicholas';

  [b]不能爲不可配置的屬性使用delete操做

"use strict";
var person = {
    name:'cook'
};
Object.defineProperty(person,'name',{
    configurable: false
});
delete person.name;

 

【3】函數
  [a]參數必須惟一

"use strict";
function sun(num,num){
    //TODO
}

  [b]修改形參不會反映到arguments中

function showValue(value){
    value = "Foo";
    alert(arguments[0]);
    //非嚴格模式:"Foo"
    //嚴格模式:"Hi"
}
showValue("Hi");

  [c]不容許使用arguments.callee和arguments.caller

"use strict";
function fn(num){
    return arguments.callee(num);
}
fn(2);
"use strict";
function outer(){
    inner();
}
function inner(){
    alert(inner.caller());
}
outer();

 

【4】不容許eval()在包含上下文中建立變量或函數

"use strict";
function fn(){
    eval("var x=10");
    alert(x);
}
fn();
//容許如下操做
var result = eval("var x = 10, y = 11; x+y");
alert(result);//21

 

【5】不容許使用eval和arguments做爲標識符,也不容許讀寫他們的值

"use strict";
var eval = 10;
var arguments = 20;

 

【6】不容許this值爲null或undefined

"use strict";
var color = "red";
function fn(){
    alert(this.color);
}
fn();

 

【7】不容許使用with語句

"use strict";
with(location){
    alert(href);
}

 

【8】不容許使用八進制字面量

"use strict";
var value = 010;
相關文章
相關標籤/搜索