在一些js库中我发现了这个代码片段:
var start, end, sel, scrollPos, subst;
[start, end, scrollPos, sel] = getSelection();
在我看来,这不是有效的分配,但代码似乎可以工作。你能帮我吗?
EDIT:
更长的版本:
...
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();
}
...
这似乎是 JS 1.7 的一个功能,称为《解构作业》 https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_(Merge_into_own_page.2Fsection)
解构赋值使得可以使用反映数组和对象字面量构造的语法从数组或对象中提取数据。
对象和数组文字表达式提供了一种创建临时数据包的简单方法。创建这些数据包后,您可以按照自己的方式使用它们。您甚至可以从函数中返回它们。
使用解构赋值可以做的一件特别有用的事情是在单个语句中读取整个结构,尽管您可以使用它们做许多有趣的事情,如下面充满示例的部分所示。
此功能类似于 Perl 和 Python 等语言中的功能。
...页面下方:
例如,您可以使用解构赋值来交换值:
var a = 1;
var b = 3;
[a, b] = [b, a];
就使用该功能而言,它似乎仅受 Mozilla Firefox 支持,这意味着只要您只支持该浏览器,使用它就完全可以接受。例如,可以编写浏览器插件来利用此功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)