Javascript 这个作业对吗?

Javascript 这个作业对吗?,javascript,Javascript,在一些js库中,我发现了以下代码片段: var start, end, sel, scrollPos, subst; [start, end, scrollPos, sel] = getSelection(); 依我看,这是无效的分配,但代码似乎正在工作。你能帮忙吗 编辑: 较长版本: ... var start, end, sel, scrollPos, subst; if (typeof(document["selection"]) != "undefined") {

在一些js库中,我发现了以下代码片段:

var start, end, sel, scrollPos, subst;

[start, end, scrollPos, sel] = getSelection();
依我看,这是无效的分配,但代码似乎正在工作。你能帮忙吗

编辑:

较长版本:

...
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();
        }
...

这似乎是JS1.7的一个特性,名为

通过使用反映数组和对象文字结构的语法,可以从数组或对象中提取数据

对象和数组文字表达式提供了一种创建临时数据包的简单方法。一旦您创建了这些数据包,就可以以任何方式使用它们。您甚至可以从函数返回它们

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

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

…再往下看:

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

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

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

这只是一个示例,还是您所看到的代码?这几乎就是我在这里看到的。它是一些标记工具栏扩展的一部分,看起来非常类似于Pythons的变量解包机制。其思想是列表或元组在变量上线性解压。这通常用于允许函数返回多个值。我没有听说它也适用于JS。我得到了
uncaughtreferenceerror:Invalid left-side in assignment
它似乎在这里不起作用:
uncaughtreferenceerror:Invalid left-side in assignment
。需要更多的背景。可能你看到的不是JS。