位置: 编程技术 - 正文
前些天IEBlog中提到实现互通并不是只靠标准就行,其中举出了一些关于事实上的标准的考虑——所谓“事实上的标准”,也就是并非标准,但大家都遵循着它去做事情的那么一种东西。
这些事实上的标准(也写作“De facto standard”)往往是在某一种事物还没有标准的时候由当事的各方相互妥协而形成的,——有趣的是,作为妥协的结果,这些“事实上的标准”自身往往和其它的东西并不协调;而真正被称作“标准”的东西往往是在发生了很多事情之后才产生的,所以几乎任何地方都有“事实上的标准”和“标准”有些格格不入的感觉。说了半天废话,该说正题了:
在本文开头的那个链接中的博文里,提到了一个关于正则表达式的语法问题:
像是“/]/”这样的形式,由于“]”本身是“匹配这些字符中的任意一个”的语法中的一部分,故ECMAScript标准中把这样的形式标记为“无效的表达式”——但是同时这样的用法由于构成简单,理解起来也并不容易产生歧义,所以实际上在大部分浏览器中这么用都是被认为“有效”的。
当IE9的开发团队刚开始测试他们的新JavaScript引擎“Chakra”的时候,它们发现有一些本来运行得很好的JavaScript代码在“Chakra”中不能运行,其中一个原因就是最初“Chakra”是按照ECMAScript标准来实现的,而旧代码中包含很多像是这样的在标准中无效的东西——若要兼容,并且“互通”,“Chakra”需要做的就不只是和标准一致,还要能认可这样的表达式。
这是“实现互通并不是只靠标准就行”的一个好例子。
除了这个以外,JavaScript中一些其它的事实标准,比方说:
在一个字符串中如果在反斜线“”之后输入一个换行标记,无论是[LF](n实际代表的含义),还是[CR](r实际代表的含义),还是[CR][LF](rn实际代表的含义),都会和反斜线一起完全被忽略掉——说“忽略掉”还不够准确,也许应该说“这种组合会被认为是把一个字符串拆在多行代码里”之类的。
如果这样说还是觉得不好理解(甚至是莫名其妙)的话,通过一些代码例子就应该比较容易理解了。
比方说,这样的代码: 其实是和 等价的。 而如果写成 就会产生一个语法错误,原因是“未结束的字符串”。 刚开始的时候它只是在IE中使用的JScript引擎独有的一个特性,但是现在几大主流浏览器都支持了这种写法,就像我刚刚提到的,它也是“事实上的标准”之一。 我很有兴趣多讲一些关于“事实上的标准”的事情,但是无奈这种东西实在是太多了,我只知道其中的很小一部分——而且还常常记不起来,所以今天我也只能写到这里了,如果我再想起来什么的话也许会另外写篇新博文吧
推荐整理分享De facto standard 世界上不可思议的事实标准,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
JavaScript的类型简单说明 原始类型是直接存储在栈(stack)上的,引用类型是存储在堆(heap)上的。原始类型又分为以下5种:Undefined、Null、Boolean、Number、StringUndefined类型:Undefined
Document对象内容集合(比较全) document文挡对象-JavaScript脚本语言描述———————————————————————注:页面上元素name属性和JavaScript引用的名称必须一致包括大小
document.getElementById的简写方式(获取id对象的简略写法) 比如用_$(id)代替document.getElementById(id).如果是纯粹的代替可以使用下面的代码function$(id){document.getElementById(id)}个人比较推荐用prototype中对document.getElementByI
标签: De facto standard 世界上不可思议的事实标准
本文链接地址:https://www.jiuchutong.com/biancheng/381911.html 转载请保留说明!友情链接: 武汉网站建设