它是从JavaScript中的数组分配多个变量的标准方法吗?在Firefox和Opera中,您可以:
var [key, value] = "key:value".split(":");
alert(key + "=" + value); // will alert "key = value";
Run Code Online (Sandbox Code Playgroud)
但它在IE8或谷歌浏览器中不起作用.
有没有人知道在没有tmp变量的其他浏览器中这样做的好方法?
var tmp = "key:value".split(":");
var key=tmp[0], value=tmp[1];
Run Code Online (Sandbox Code Playgroud)
这是即将出现的JavaScript版本,还是FF和Opera中的自定义实现?
gre*_*ers 20
解构分配在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'
Run Code Online (Sandbox Code Playgroud)
由于此功能会破坏向后兼容性,因此您需要转换代码以使其在所有浏览器中都能正常运行.许多现有的转发器支持解构.Babel是一个非常受欢迎的转发器.请参阅Kangax的浏览器和转换器ES6支持表.
更多信息:
如果您想知道将要发生什么,请阅读"解构分配"一节.
https://developer.mozilla.org/en/New_in_javascript_1.7
您可以使用的语言功能始终取决于您的环境.
例如,开发移动Safari(或其他浏览器的Web堆栈,如Palm Pre,Android等)或AIR比开发网络更为可预测(您甚至还需要考虑IE6) .
针对问题的跨浏览器解决方案是初始化一个数组,该数组包含要填充window.variable格式的变量列表,然后循环执行.无法想象为什么你会这样做.似乎总会有更好的解决方案.
var [x, y] = [1, 2];
console.log(x, y); // 1 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23563 次 |
| 最近记录: |