`
zhouyrt
  • 浏览: 1125576 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaScript中的直接量与初始器的区别

阅读更多

很多代码优化及公司规范都会提到

写对象不应该

var obj = new Object()

而应该

var obj = {}

写数组不应该

var arr = new Array()

而应该

var arr = []

很多书籍《JavaScript高级程序设计》《JavaScript权威指南》也建议使用对象、数组直接量而别使用new方式。这里就引出了直接量(Literals)的概念。 

 

ES1(1997.6)规定的直接量有四种:Null、Boolean、Numeric、String


 

ES2(1998.8)规定的直接量和ES1相同



到了ES3(1999.12),则加入了正则表达式直接量(Regular Expression Literals),有5种直接量


 

以上规范可以看到,ES1到ES5中都没有将对象,数组纳入直接量的概念中。那为什么很多书籍都使用“对象直接量”、“数组直接量”呢?

 

实际在ES3,ES5中,对象和数组被归纳到第十一章(表达式)里,有一个新名词称为 初始器(Initialiser)。

 

ES3 


 

ES5



为何ES3中将正则对象纳入了直接量,数组和对象怎么没有呢?

var reg = /abc/g
var arr = [1, 2, 3]
var obj = {name: 'John McCarthy'}

以上代码让我们很自然的认为,数组/对象应该和正则一样纳入直接量的概念里。再看下面的代码

var arr = [obj.a, 0, obj.a+1]
var obj = {name: 'John' + 'McCarthy'}

可以看到“obj.a”、“obj.a+1” 等都是表达式运算,故而从ES3开始把数组、对象纳入在11章表达式(Exrpessions)里,称为初始器(Initialiser)。

正则表达式里则不会出现表达式运算,因此放在第7章直接量(Literals)里。

 

 

由于初始器(Initialiser)的称呼晚于一些书籍的出版,《JavaScript权威指南》后续版本如第六版仍然采用 “对象直接量”,“数组直接量” 这样的名词。



最后提一下Undefined,不知ES规范为什么没把Undefined纳入到直接量(Literals)的概念里。

 

相关:

ECMAScript各版本

JavaScript权威指南(第六版)

 

 

  • 大小: 19 KB
  • 大小: 27.4 KB
  • 大小: 28.1 KB
  • 大小: 50.6 KB
  • 大小: 30.7 KB
  • 大小: 107.8 KB
分享到:
评论

相关推荐

    JavaScript权威指南(第6版)中文文字版

    2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可变的原始值和可变的...

    JavaScript权威指南-第六版

     2.3 直接量27  2.4 标识符和保留字28  2.5 可选的分号30  第3章 类型、值和变量32  3.1 数字34  3.2 文本38  3.3 布尔值43  3.4 null和undefined44  3.5 全局对象45  3.6 包装对象46  3.7 不可变的原始...

    JavaScript权威指南(第6版)

    2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量...

    JavaScript权威指南(第6版)(附源码)

    2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量...

    JavaScript权威指南(第6版)中文版pdf+源代码

     2.3 直接量27  2.4 标识符和保留字28  2.5 可选的分号30  第3章 类型、值和变量32  3.1 数字34  3.2 文本38  3.3 布尔值43  3.4 null和undefined44  3.5 全局对象45  3.6 包装对象46  3.7 不可变的原始...

    JavaScript权威指南(第6版) 英文版

    2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可...

    JavaScript权威指南(第6版)(中文版)

    2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量...

    JavaScript 权威指南(第四版).pdf

     2.3 直接量27  2.4 标识符和保留字28  2.5 可选的分号30  第3章 类型、值和变量32  3.1 数字34  3.2 文本38  3.3 布尔值43  3.4 null和undefined44  3.5 全局对象45  3.6 包装对象46  3.7 不可变的原始...

    JavaScript权威指南(第6版)中文

    2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可...

    JavaScript权威指南(第6版)

    2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可变的原始值和可变的...

    JavaScript权威指南(第六版) 清晰-完整

    2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量...

    JavaScript数组和循环详解

    在JavaScript中,数组可以使用正式的对象表示法来创建,或者可以使用直接量表示法来初始化。 代码如下: var arrObject = new Array(“val1”, “val2”); // 作为对象的数组 var arrLiteral = [“val1”, “val2”]...

    JavaScript权威指南(第6版) 中文版

    2.3 直接量 27 2.4 标识符和保留字 28 2.5 可选的分号 30 第3章 类型、值和变量 32 3.1 数字 34 3.2 文本 38 3.3 布尔值 43 3.4 null和undefined 44 3.5 全局对象 45 3.6 包装对象 46 3.7 不可变的原始值和可变的...

    javascript 冒号 使用说明

    老在眼前晃,于是在网上搜吧,查... 对象直接量(也称为对象初始化程序)是由一个列表构成的,这个列表的元素是用冒号分隔的属性/值对,元素之间用逗号隔开了,整个列表包含在花括号之中。 javascript中的对象可以像

    PHP培训教程之AJAX技术.docx

    使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与器进行交互。 PHP培训教程之AJAX技术全文共3页,当前为第1页。 通过HTTPRequest,一个web页面可以一个请求到web器并且接受web器返回的信息(不用重新...

    共享日常收集JS正则表达式(JavaScript regular expression)

    正则表达式直接量则与此不同,ECMAScript 3规范规定,一个正则表达式直接量会在执行到它时转换为一个RegExp对象,同一段代码所表示正则表达式直接量的每次运算都返回同一个对象。ECMAScript 5规范则做了相反的规定,...

    基于JavaScript实现的计算双摆的轨迹并绘制仿真动画项目源码

    直接在线体验或者下载整个文件,然后双击index. htm在浏览器中运行。注意目前还需网络。 注意 1 由于目前我还无法完成加载动画的正确添加(不管我如何添加加载动画,它都会计算完成后再显示加载动画,这违背的加载动画...

Global site tag (gtag.js) - Google Analytics