它是从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中的自定义实现?
解构分配在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 - 解构章节
如果您想知道将要发生什么,请阅读"解构分配"一节.
https://developer.mozilla.org/en/New_in_javascript_1.7
您可以使用的语言功能始终取决于您的环境.
例如,开发移动Safari(或其他浏览器的Web堆栈,如Palm Pre,Android等)或AIR比开发网络更为可预测(您甚至还需要考虑IE6) .
针对问题的跨浏览器解决方案是初始化一个数组,该数组包含要填充window.variable格式的变量列表,然后循环执行.无法想象为什么你会这样做.似乎总会有更好的解决方案.