可以分配给数组中的多个变量吗?

新手上路,请多包涵

它是从 JavaScript 中的数组分配给多个变量的标准方法吗?在 Firefox 和 Opera 中,您可以:

 var [key, value] = "key:value".split(":");
alert(key + "=" + value); // will alert "key = value";

但它在 IE8 或谷歌浏览器中不起作用。

有谁知道在没有 tmp 变量的情况下在其他浏览器中执行此操作的好方法吗?

 var tmp = "key:value".split(":");
var key=tmp[0], value=tmp[1];

这是将在即将推出的 JavaScript 版本中出现的东西,还是只是在 FF 和 Opera 中的自定义实现?

原文由 gregers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 263
2 个回答

如果您想知道接下来会发生什么,请阅读解构赋值部分。

https://developer.mozilla.org/en/New_in_javascript_1.7

您可以使用哪些语言功能始终取决于您的环境。

例如,为 Mobile Safari(或为其他浏览器(如 Palm Pre、Android 等)或 AIR 开发的 Web 堆栈)比为整个 Web 开发(您仍然必须考虑 IE6)更具可预测性.


解决手头问题的跨浏览器解决方案是初始化一个数组,该数组包含要填充的变量列表 window.variable 格式,然后循环遍历。无法想象为什么你会这样做。似乎总会有更好的解决方案。

原文由 Nosredna 发布,翻译遵循 CC BY-SA 3.0 许可协议

解构赋值在 ECMAScript 2015(又名 ES6)中被标准化。但并非所有浏览器都实现了解构(截至 2016 年 3 月),即使实现了,用户也需要一段时间才能更新到支持的浏览器。查看规范中的 示例,了解您可以做的所有很棒的事情。这里有一些:

 // Assign from array elements
var [key, value] = "key:value".split(":");
// key => 'key'
// value => 'value'

// Assign from object properties
var {name: a, age: b} = {name: 'Peter', age: 5};
// a => 'Peter'
// b => 5

// Swap
[a, b] = [b, a]
// a => 5
// b => 'Peter'

由于此功能破坏了向后兼容性,因此您需要 转换 代码以使其适用于所有浏览器。许多现有的转译器都支持解构。 Babel 是一个非常流行的转译器。请参阅 Kangax 的浏览器和转译器 ES6 支持表

更多信息:

ES6 浏览器支持的兼容性表

探索 ES6 - 解构章节

原文由 gregers 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题