在 JavaScript 中,[ ] 通常表示一个空数组。但是,在某些情况下,它还可以用于访问对象属性或数组元素。
访问对象属性
当使用点符号(.)访问对象属性时,属性名必须是一个有效的标识符。如果属性名不是有效的标识符,可以使用 [ ] 运算符来访问属性。例如:
const obj = { 'a-b': 1 }; console.log(obj['a-b']); // 输出 1
访问数组元素
在数组中,每个元素都有一个数字索引,可以使用 [ ] 运算符来访问它们。例如:
const arr = [1, 2, 3]; console.log(arr[0]); // 输出 1
这里的 [0]
表示访问数组的第一个元素。
slice.call()
在 JavaScript 中,slice.call()
是一种常见的将类数组对象转换为数组的技巧。类数组对象是具有 length 属性和一些数值属性的对象。例如,函数的参数列表就是一个类数组对象。
function foo() { const args = [].slice.call(arguments); // 将 arguments 转换为数组 console.log(args); } foo(1, 2, 3); // 输出 [1, 2, 3]
这里使用了 [].slice.call()
,其中 []
表示创建一个空数组,然后通过 call()
方法调用数组原型中的 slice()
方法,将 arguments
对象转换为数组。
如果在 ES6 中,可以使用扩展运算符(...)来代替 slice.call()
:
function foo(...args) { console.log(args); } foo(1, 2, 3); // 输出 [1, 2, 3]
这样可以更加简洁地实现相同的功能。
总结
- 在 JavaScript 中,[ ] 可以表示一个空数组或者访问对象属性或数组元素。
- slice.call() 是一种将类数组对象转换为数组的技巧,在 ES6 中可以使用扩展运算符代替。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/9781