对象和数组初始化表达式实际上是一个新创建的对象和数组。这些初始化表达式有时称做“对象直接量”和“数组直接量”。然而和布尔直接量不同,它们不是原始表达式,因为它们所包含的成员或者元素都是子表达式。数组初始化表达式语法非常简单,我们以此开始。
数组初始化表达式是通过一对方括号和其内由逗号隔开的列表构成的。初始化的结果是一个新创建的数组。数组的元素是逗号分隔的表达式的值:
| var hzh1 = [] |
| var hzh2 = [1+2,3+4] |
| console.log("判断hzh1数组的长度:"); |
| console.log(hzh1.length); |
| console.log(""); |
| console.log("判断hzh2数组的长度:"); |
| console.log(hzh2.length); |
| console.log(""); |
| console.log("hzh2的第一个元素:"); |
| console.log(hzh2[0]); |
| console.log(""); |
| console.log("hzh2的第二个元素:"); |
| console.log(hzh2[1]) |
| [Running] node "e:\HMV\JavaScript\JavaScript.js" |
| 判断hzh1数组的长度: |
| 0 |
| |
| 判断hzh2数组的长度: |
| 2 |
| |
| hzh2的第一个元素: |
| 3 |
| |
| hzh2的第二个元素: |
| 7 |
| |
| [Done] exited with code=0 in 0.186 seconds |
数组初始化表达式中的元素初始化表达式也可以是数组初始化表达式。也就是说,这些表达式是可以嵌套的:
| var matrix = [[1,2,3], [4,5,6], [7,8,9]]; |
JavaScript 对数组初始化表达式进行求值的时候,数组初始化表达式中的元素表达式也都会各自计算一次。也就是说,数组初始化表达式每次计算的值有可能是不同的。
数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值 undefined。例如,下面这个数组包含5个元素,其中三个元素是 undefined:
| var sparseArray = [1,,,,5]; |
| var hzh = [1,,,,5]; |
| console.log("输出hzh数组的长度:"); |
| console.log(hzh.length); |
| console.log("hzh数组的第1个元素:"); |
| console.log(hzh[0]); |
| console.log(""); |
| console.log("hzh数组的第2个元素:"); |
| console.log(hzh[1]); |
| console.log(""); |
| console.log("hzh数组的第3个元素:"); |
| console.log(hzh[2]); |
| console.log(""); |
| console.log("hzh数组的第4个元素:"); |
| console.log(hzh[3]); |
| console.log(""); |
| console.log("hzh数组的第5个元素:"); |
| console.log(hzh[4]); |
| console.log(""); |
| [Running] node "e:\HMV\JavaScript\JavaScript.js" |
| 输出hzh数组的长度: |
| 5 |
| hzh数组的第1个元素: |
| 1 |
| |
| hzh数组的第2个元素: |
| undefined |
| |
| hzh数组的第3个元素: |
| undefined |
| |
| hzh数组的第4个元素: |
| undefined |
| |
| hzh数组的第5个元素: |
| 5 |
| |
| |
| [Done] exited with code=0 in 0.57 seconds |
数组直接量的元素列表结尾处可以留下单个逗号,这时并不会创建一个新的值为undefined的元素。
| var hzh = [1,]; |
| console.log("输出hzh数组的长度:"); |
| console.log(hzh.length); |
| [Running] node "e:\HMV\JavaScript\JavaScript.js" |
| 输出hzh数组的长度: |
| 1 |
| |
| [Done] exited with code=0 in 0.176 seconds |
对象初始化表达式和数组初始化表达式非常类似,只是方括号被花括号代替,并且每个子表达式都包含一个属性名和一个冒号作为前缀:
| var p = { x:2.3, y:-1.2 }; |
| var q = {}; |
| q.x=2.3; q.y = -1.2; |
对象直接量也可以嵌套,比如:
| var rectangle = { upperLeft: { x: 2, y: 2 }, |
| lowerRight: { x: 4, y: 5 } }; |
JavaScript 求对象初始化表达式的值的时候,对象表达式也都会各自计算一次,并且它们不必包含常数值:它们可以是任意 JavaScript 表达式。同样,对象直接量中的属性名称可以是字符串而不是标识符(这在那些只能使用保留字或一些非法标识符作为属性名的地方非常有用):
| var side = 1; |
| var square = { "upperLeft": { x: p.x, y: p.y }, |
| 'lowerRight': { x: p.x + side, y: p.y + side}}; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?