这项任务是否正确?

Ent*_*ack 4 javascript

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

var start, end, sel, scrollPos, subst;

[start, end, scrollPos, sel] = getSelection();
Run Code Online (Sandbox Code Playgroud)

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();
        }
...
Run Code Online (Sandbox Code Playgroud)

zzz*_*Bov 5

这似乎是一个名为"Destructuring Assignment"的JS 1.7特性

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

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

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

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

......在页面的下方:

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

var a = 1;
var b = 3;
[a, b] = [b, a];
Run Code Online (Sandbox Code Playgroud)

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