Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript替代方案_Javascript - Fatal编程技术网

JavaScript替代方案

JavaScript替代方案,javascript,Javascript,在我工作的一些项目中,添加了一些具有以下语法的块: var [code, name] = input.split("/"); console.log(code); console.log(name); 我真的很喜欢这个,很简单很小。的确,我可以使用其他语法来实现这一点,如: var code_name = input.split("/"); console.log(code_name[0]); console.log(code_name[1]); 但是,一些浏览器,如谷歌浏览器和歌剧院不支持

在我工作的一些项目中,添加了一些具有以下语法的块:

var [code, name] = input.split("/");
console.log(code);
console.log(name);
我真的很喜欢这个,很简单很小。的确,我可以使用其他语法来实现这一点,如:

var code_name = input.split("/");
console.log(code_name[0]);
console.log(code_name[1]);
但是,一些浏览器,如谷歌浏览器和歌剧院不支持这个“功能”。有人知道这是JS未来的一个功能,还是已经被弃用了?如果不推荐,是否有一些漂亮的替代品

谢谢大家。

这可能是ECMAScript未来的一项功能,目前已在Firefox中提供

参见:


对于类似的讨论-不幸的是,目前似乎不存在跨浏览器解决方案-使用临时变量更安全

它不像您建议的代码那么好,但我认为它看起来相当不错,尽管您确实需要采取一些变通办法:

首先,我们的想法是为调用此函数创建一个干净的语法,例如:

[5,4,3,2,1].list(a,b,c,d,e);
其思想是通过引用修改a、b、c、d、e

由于变量作为值传递,并且只有对象通过引用传递,因此变量a、b、c、d、e必须是对象

var a=Object(),b=Object(),c=Object(),d=Object(),e=Object();
一旦它们成为对象,您就可以通过引用修改它们的值(如下所述)

因此,将其包装在一个扩展Array.prototype的“list”函数中,我最终得出以下结论:

        Array.prototype.list = function(){
            for(var i=0;i<this.length;i++){
                (function(val){if(val)this.valueOf=this.toSource=this.toString=function(){return val};return val;}).call(arguments[i],this[i])
            }
        }

请参阅此答案:+1以尝试解决此问题。不过请注意:您可以初始化为
var a={}
        Array.prototype.list = function(){
            for(var i=0;i<this.length;i++){
                (function(val){if(val)this.valueOf=this.toSource=this.toString=function(){return val};return val;}).call(arguments[i],this[i])
            }
        }
<!DOCTYPE html>

<html>
    <head><title>test</title>
        <script type="text/javascript">
            Array.prototype.list = function(){
                for(var i=0;i<this.length;i++){
                    (function(val){if(val)this.valueOf=this.toSource=this.toString=function(){return val};return val;}).call(arguments[i],this[i])
                }
            }
        </script>
    </head>
    <body>
        <a id="test" href="#">test</a>
        <script type="text/javascript">
            var a=Object(),b=Object(),c=Object(),d=Object(),e=Object();
            [5,4,3,2,1].list(a,b,c,d,e);
            console.log(a,b,c,d,e);
        </script>
    </body>
</html>