You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Let this long package float,
Goto private class if short.
While protected with debugger case,
Continue volatile interface.
Instanceof super synchronized throw,
Extends final export throws.
Try import double enum?
-False, boolean, abstract function,
Implements typeof transient break!
Void static, default do,
Switch int native new.
Else, delete null public var
In return for const, true, char
...Finally catch byte
ECMAScript Annex B
ECMAScript规范包含了Annex B,其中介绍了浏览器兼容性与官方规范的差异,应该注意避免使用
主要如下:
0123(十进制83)
window.escape()
和window.unescape()
可以将字符串转义和回转成带有%
的十六进制转义序列,如window.escape('?')
的结果是%3F
,此特性已废弃String.prototype.substr()
和String.prototype.substring()
十分相似,前者的第二个参数是截取长度,而后者是结束索引。前者没有被严格废弃,但是应该避免使用同时,Web ECMAScript规范中介绍了目前浏览器因为兼容性考虑,实现的一些内容(并未包含在官方规范内),同样应该避免使用
<!-- -->
在浏览器中是合法的String.prototype
中包含HTML格式字符串的附加方法,如anchor()、big()...
等等RegExp
扩展RegExp.$1 .. RegExp.$9
和RegExp.lastMatch/RegExp["$&"]
(匹配组和最近匹配),同样是非标准Function.prototype.arguments
和arguments.caller
均已废止,Function.caller
非标准宿主对象
上例中,
a
不仅仅是一个对象,还是个特殊的宿主对象,其内部的[[Class]]
值来自预定义的属性,不可更改。需要注意如下问题:boolean
时会意外的成为假值或真值,需要注意object
内建方法,比如toString()
this
重载为其他对象的方法除此之外,
console
及其各种方法也是宿主环境提供全局DOM变量
一个不太为人所知的现象:创建带有id的DOM元素时,也会创建同名的全局变量
因此尽量不要使用全局变量
原生原型
除非必要,否则不要扩展原生原型。其次,扩展时必须加入判断条件:
这种情况一般称之为
polyfill/shim
<script>
多个
<script>
标签中的JavaScript代码是如何运行的:global
对象(浏览器中是window
)保留字
保留字分为四类:关键字(
function, switch
等 )、预留关键字(enum
等 )、null
常量和true/false
布尔常量一首关于保留字有趣的小诗:
这首诗中也包含了一些ES3中的保留字(byte、long)等,它们在ES5中已经不再是保留字
在ES5之前,保留字也不能用作对象属性名或键,目前已经没有这个限制
实现中的限制
JavaScript规范对于函数中参数个数,字符串常量的长度等没有限制,但是由于JavaScript引擎实现各异,会导致一些限制:
The text was updated successfully, but these errors were encountered: