錯誤類型:SyntaxError: Delete of an unqualified identifier in strict mode
使用前:
// variable (沒有作用)
var x = 3.14;
console.log( delete x ); // false
console.log(x); // 3.14
// function via declararion (沒有作用)
function f1(){ console.log('Hi 1'); }
console.log( delete f1 ); // false
console.log(f1); // ƒ f1(){ console.log('Hi 1'); }
// function via expression (沒有作用)
var f2 = function() { console.log('Hi 2'); }
console.log( delete f2 ); // false
console.log(f2); // ƒ () { console.log('Hi 2'); }
// array element
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log( delete fruits[2] ); // true
console.log(fruits); // ["Banana", "Orange", empty, "Mango"]
// object property
var person = {name: 'John', age:18};
console.log( delete person.name ); // true
console.log(person); // {age: 18}
使用後:
"use strict";
// variable
var x = 3.14;
console.log( delete x ); // SyntaxError: Delete of an unqualified identifier in strict mode.
// function via declararion
function f1(){ console.log('Hi 1'); }
console.log( delete f1 ); // SyntaxError: Delete of an unqualified identifier in strict mode.
// function via expression
var f2 = function() { console.log('Hi 2'); }
console.log( delete f2 ); // SyntaxError: Delete of an unqualified identifier in strict mode.
// array element
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log( delete fruits[2] ); // true
console.log(fruits); // ["Banana", "Orange", empty, "Mango"]
// object property
var person = {name: 'John', age:18};
console.log( delete person.name ); // true
console.log(person); // {age: 18}
3. 函數的參數名稱不能重複
一般模式下,函數的參數名稱如果不慎重複,不會有提醒。
錯誤類型:SyntaxError: Duplicate parameter name not allowed in this context
使用前:
function myFunc(p1, p1){
console.log(p1);
};
myFunc(10, 20); // 20
使用後:
"use strict";
function myFunc(p1, p1){ // `SyntaxError: Duplicate parameter name not allowed in this context`
console.log(p1);
};
錯誤類型:TypeError: Cannot set property age of #<Object> which has only a getter
使用前:
var person = {get age() {return 18} };
console.log(person); // {}
console.log(person.age); // 18
person.age = 70;
console.log(person.age); // 18
使用後:
"use strict";
var person = {get age() {return 18} };
console.log(person); // {}
console.log(person.age); // 18
person.age = 70; // TypeError: Cannot set property age of #<Object> which has only a getter
console.log(person.age);