很多代码优化及公司规范都会提到
写对象不应该
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)的概念里。
相关:
相关推荐
- **1.1.3 JavaScript与Java的区别** - JavaScript 和 Java 在名称上有相似之处,但它们实际上是两种完全不同的编程语言。 - Java 是一种静态类型的面向对象编程语言,通常需要编译成字节码后在 Java 虚拟机 (JVM)...
在Web开发中,JavaScript提供了内置的Date对象,但为了提供更好的用户体验和更丰富的功能,开发者通常会使用专门的日期选择器库。本主题主要探讨JavaScript日期选择器的实现原理、常见功能以及如何在项目中应用。 ...
JavaScript语法与Java类似,但也有一些显著区别。例如,JavaScript是弱类型语言,这意味着在声明变量时无需指定数据类型。变量可以用`var`关键字定义,且可以随时改变其数据类型。例如: ```javascript var x = 3; x...
此外,JavaScript还支持数组直接量([1, 2, 3])和对象直接量({name: 'John', age: 30}),这些直接量提供了快速创建和操作数据结构的能力。 总的来说,JavaScript是一门相对简单的语言,它的核心概念包括过程式...
本文将围绕“100个可以直接拿来用的JavaScript代码”这一主题,详细阐述其中可能涵盖的常见JavaScript知识点,以及它们在实际开发中的应用。 1. **变量与数据类型**:JavaScript支持var、let和const声明变量,以及...
- JSON对象是一个轻量级的数据交换格式,JavaScript中使用对象字面量来表示JSON对象,例如:{name:"user"}。 - NaN表示一个非数字值,通常在进行非法的数值计算时返回。 - null是一个表示空值的特殊关键字。 - ...
JavaScript在SharePoint中的应用是开发SharePoint解决方案的关键技术之一,尤其对于增强用户界面交互和定制化功能至关重要。本文将深入探讨JavaScript与SharePoint的结合,以及如何利用它来提升SharePoint站点的功能...
JavaScript 中的对象字面量是一种非常便捷的方式来创建对象并初始化其属性和方法。它允许开发者在一个大括号 `{}` 中定义对象的所有属性和方法,这使得代码更加简洁、易读。 #### 二、对象字面量的定义方式 ##### ...
直接量是编程语言中直接出现在程序中的值,JavaScript中的直接量包括数字、字符串、布尔值、正则表达式、null和对象初始化程序等。在JavaScript中,标识符是用来命名变量、函数和循环标签的单词。标识符命名有一定的...
| 变量 | 直接量 | `v = 'this is a string.'`, `obj.constructor` | | 表达式 | 值运算、对象存取 | `v = 'this is a string.'`, `obj.constructor` | | 逻辑语句 | 顺序、分支、循环 | `if (false) { /* ... */ }`...
1. **页面嵌入式**:通过`<script type="text/javascript"></script>`标签直接在HTML文档中嵌入JavaScript代码。 2. **外部文件**:通过`<script type="text/javascript" src="demo.js"></script>`标签引用外部的...
10. JavaScript的编码实践:比如Array和Object直接量的使用,以及with() {}语句和this关键字的使用,都是编码实践中会涉及的高级话题。 11. 作用域和可见性:涉及私有域和保护域的概念,帮助开发者理解在JavaScript...
**JavaScript**是一种轻量级的编程语言,被广泛应用于网页开发中,用于增强网页的交互性与动态效果。以下是一些基本的语法和使用技巧。 ##### 1. 嵌入JavaScript代码 在HTML文档中嵌入JavaScript代码可以通过`...
1. **字面量**:在编程中,字面量是指直接表示特定值的符号,如数字(123)、字符串("hello")或布尔值(true/false)。这些值一旦创建,就不能被修改。 2. **变量**:变量则不同,它们是可变的。在JavaScript中,...
在JavaScript编程语言中,直接量是程序代码中可以直接使用的值,它们不需要通过变量或者对象属性来引用。直接量直接嵌入到JavaScript代码中,并在程序执行时使用。本章内容涵盖了JavaScript中常见的直接量类型及其...
12. **Array和Object直接量**:应使用`[]`和`{}`直接量来创建数组和对象,避免使用`new Array()`或`new Object()`,因为这种做法会导致不必要的构造函数调用。 13. **修改内置对象的原型**:不应直接修改内置对象的...
JavaScript本身并不直接支持HashMap,但我们可以利用对象(Object)的特性来模拟HashMap的实现。这篇博客“基于JavaScript的HashMap实现”可能详细阐述了如何通过自定义函数来创建一个高效且灵活的HashMap数据结构。...
- **直接量**: 直接量是直接在程序中给出的值,如字符串直接量、数值直接量等。 - **标识符和保留字**: 标识符用于命名变量、函数等,必须遵循特定的规则;保留字是指被JavaScript语言保留的关键词,不能用作...