这项任务是否正确?

时间:2014-03-04 15:07:18

标签: javascript

在某些js库中,我找到了这段代码:

var start, end, sel, scrollPos, subst;

[start, end, scrollPos, sel] = getSelection();

Imo这不是有效的分配,但代码似乎正在运行。你能帮我吗?

修改

更长的版本:

...
var start, end, sel, scrollPos, subst;
        if (typeof(document["selection"]) != "undefined") {
            sel = document.selection.createRange().text;
        } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
            [start, end, scrollPos, sel] = getSelection();
        }
...

1 个答案:

答案 0 :(得分:5)

这似乎是一个名为"Destructuring Assignment"

的JS 1.7功能
  

解构赋值可以使用反映数组和对象文字构造的语法从数组或对象中提取数据。

     

对象和数组文字表达式提供了一种创建临时数据包的简便方法。一旦创建了这些数据包,就可以按照自己的方式使用它们。你甚至可以从函数中返回它们。

     

使用解构赋值可以做的一件特别有用的事情是在单个语句中读取整个结构,尽管您可以使用它们执行许多有趣的操作,如下面的示例部分所示。 / p>      

此功能类似于Perl和Python等语言中的功能。

...在页面的下方:

  

例如,您可以使用解构赋值来交换值:

var a = 1;
var b = 3;
[a, b] = [b, a];

就使用该功能而言,它似乎只有Mozilla Firefox支持,这意味着只要您只支持该浏览器,它就完全可以使用。例如,可以编写浏览器插件以利用此功能。