【问题标题】:Javascript quick variable assignmentJavascript 快速变量赋值
【发布时间】:2011-09-03 05:48:03
【问题描述】:

这是我不知道如何正确表达的问题之一,因此如果之前有人问过,我深表歉意。

Python 提供了一些非常简单的语句来快速将数组分配给值。例如,如果我有一个像 box=[0,0,100,100] 这样的数组作为盒子,我可以像 x1,y1,x2,y2=box 这样分配这些点。 javascript中有这样的声明吗?这在var x1,y1,x2,y2=this.box

更简洁的类函数中特别有用
var x1=this.box[0];
var y1=this.box[1];
var x2=this.box[2];
var y2=this.box[3];

如果是这样,那么是否有任何 javascript 方法可以将此应用于 for 循环?来自python,下面看起来很直观

boxes=[[0,0,100,100],[0,0,100,100],[0,0,100,100],[0,0,100,100]]

for box in boxes:
 x1,x2,x3,x4 = box
 #do something

绝对比

更直观
var boxes=[[0,0,100,100],[0,0,100,100],[0,0,100,100],[0,0,100,100]];

    for (var i = 0; i < boxes.length : i++){
      var box = boxes[i];
      var x1 = box[0];
      var y1 = box[1];
      var x2 = box[2];
      var y2 = box[3];

【问题讨论】:

  • PHP (list) 和 Perl 也有。 Javascript 没有。
  • 仅供参考,它的调用解构赋值和 js 1.7 (developer.mozilla.org/en/…)
  • @Alex:谢谢。在我看来,它不像 Python 那样干净,但它绝对有帮助
  • @Alex,另一个例子是默认值。我真的可以在函数参数中使用默认值。

标签: javascript arrays variables variable-assignment


【解决方案1】:

我相信这是不行的。或者,您可以将列表生成为

var boxes = [
   {'x1':0, 'y1':0, 'x2':100, 'y2':100},
   {'x1':0, 'y1':0, 'x2':100, 'y2':100},
   {'x1':0, 'y1':0, 'x2':100, 'y2':100},
]

然后你可以访问它们

for (i in boxes) {
   var box = boxes[i]
   // use box.x1 box.y1 box.x2 box.y2
   //such as:
   console.log(box.x1);
}

【讨论】:

    【解决方案2】:

    跨浏览器是不可能的,抱歉。 Firefox 实现了一种新语法,但目前没有其他浏览器这样做:

    var [x, y] = [1, 2];
    

    【讨论】:

    • 这是新的 javascript 语法,据我所知 1.7。遗憾的是,该支持不可用。
    • 太可惜了,这是我认为JS没有做出好的设计决策的情况之一
    • 请注意,很多人对咖啡脚本赞不绝口:jashkenas.github.com/coffee-script,它编译为 JS。它支持上述语法。
    猜你喜欢
    • 1970-01-01
    • 2016-03-26
    • 2014-03-22
    • 2017-07-01
    • 1970-01-01
    • 2011-01-07
    • 2015-03-24
    相关资源
    最近更新 更多