国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

De facto standard 世界上不可思議的事實標準

2019-11-21 00:16:18
字體:
來源:轉載
供稿:網友

前些天IEBlog中提到實現互通并不是只靠標準就行,其中舉出了一些關于事實上的標準的考慮――所謂“事實上的標準”,也就是并非標準,但大家都遵循著它去做事情的那么一種東西。

這些事實上的標準(也寫作“De facto standard”)往往是在某一種事物還沒有標準的時候由當事的各方相互妥協而形成的,――有趣的是,作為妥協的結果,這些“事實上的標準”自身往往和其它的東西并不協調;而真正被稱作“標準”的東西往往是在發生了很多事情之后才產生的,所以幾乎任何地方都有“事實上的標準”和“標準”有些格格不入的感覺。

說了半天廢話,該說正題了:

在本文開頭的那個鏈接中的博文里,提到了一個關于正則表達式的語法問題:

像是“/]/”這樣的形式,由于“]”本身是“匹配這些字符中的任意一個”的語法中的一部分,故ECMAScript標準中把這樣的形式標記為“無效的表達式”――但是同時這樣的用法由于構成簡單,理解起來也并不容易產生歧義,所以實際上在大部分瀏覽器中這么用都是被認為“有效”的。

當IE9的開發團隊剛開始測試他們的新JavaScript引擎“Chakra”的時候,它們發現有一些本來運行得很好的JavaScript代碼在“Chakra”中不能運行,其中一個原因就是最初“Chakra”是按照ECMAScript標準來實現的,而舊代碼中包含很多像是這樣的在標準中無效的東西――若要兼容,并且“互通”,“Chakra”需要做的就不只是和標準一致,還要能認可這樣的表達式。

這是“實現互通并不是只靠標準就行”的一個好例子。

除了這個以外,JavaScript中一些其它的事實標準,比方說:

在一個字符串中如果在反斜線“/”之后輸入一個換行標記,無論是[LF](/n實際代表的含義),還是[CR](/r實際代表的含義),還是[CR][LF](/r/n實際代表的含義),都會和反斜線一起完全被忽略掉――說“忽略掉”還不夠準確,也許應該說“這種組合會被認為是把一個字符串拆在多行代碼里”之類的。

如果這樣說還是覺得不好理解(甚至是莫名其妙)的話,通過一些代碼例子就應該比較容易理解了。

比方說,這樣的代碼:

復制代碼 代碼如下:

var s = "This is an/
one line string.";

其實是和
復制代碼 代碼如下:

var s = "This is an" +
" one line string.";

等價的。
而如果寫成
復制代碼 代碼如下:

var s = "This is an
one line string."

就會產生一個語法錯誤,原因是“未結束的字符串”。

剛開始的時候它只是在IE中使用的JScript引擎獨有的一個特性,但是現在幾大主流瀏覽器都支持了這種寫法,就像我剛剛提到的,它也是“事實上的標準”之一。

我很有興趣多講一些關于“事實上的標準”的事情,但是無奈這種東西實在是太多了,我只知道其中的很小一部分――而且還常常記不起來,所以今天我也只能寫到這里了,如果我再想起來什么的話也許會另外寫篇新博文吧

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦东新区| 新营市| 忻州市| 紫金县| 苍南县| 安仁县| 怀化市| 贺州市| 嘉峪关市| 宁武县| 买车| 苏州市| 绥宁县| 安化县| 辽宁省| 嘉祥县| 商城县| 鄱阳县| 杭锦旗| 奉节县| 蒙山县| 两当县| 仙居县| 阳信县| 页游| 苗栗县| 榆树市| 乌兰浩特市| 外汇| 萨嘎县| 防城港市| 凤台县| 彭阳县| 山东| 松潘县| 河池市| 东莞市| 舒兰市| 石景山区| 通州市| 阜新|