这条规则的意思是标识符中不允许出现转义字符。
// Uncaught SyntaxError:
// Keyword must not contain escaped characters
eval('var v\\u0061r=1;');
在控制台敲入如上例子会报错,但报的错误提示是说关键字不能包括转义字符。
// 不报错
eval('var \\u0061b=1;');
// 输出ab的值为1
console.log(ab);
在试过以上例子以后,发现标识符中其实是可以包括转义字符的。
'use strict';
var obj = {name: 1, name: 2};
// Object {name: 2}
console.log(obj);
var obj2 = {name: 111, name: 222};
// Object {name: 222}
console.log(obj2);
并看不出什么区别。= =
do-while语句后不需要分号。
for-in循环的头部不允许出现赋值。
// 输出 0,1,2
var arr = [3, 4, 5];
for(var i = 1 in arr) {
console.log(i);
}
// 输出 name,pro
var obj = {
name: 1,
pro: 2
};
for(var i = 1 in obj) {
console.log(i);
}
从运行结果来看,即使在循环的头部进行赋值,也不会造成什么影响。
getter函数不是构造函数。
// Uncaught TypeError:
// Object.getOwnPropertyDescriptor(...).get is not a constructor
var i = new (Object.getOwnPropertyDescriptor({get a(){}}, 'a')).get;
内置类型的prototype不是实例。