【问题标题】:How to Replace with()如何替换为()
【发布时间】:2021-08-23 23:00:08
【问题描述】:

我一直在阅读 with() 并试图弄清楚如何重写这段代码。

    _$createRootItemAreas: function() {
        var areaSize = 50;
        var sides = { y2: 0, x2: 0, y1: 'y2', x1: 'x2' };
        for( side in sides ) {
            var area = this.root._$getArea();
            area.side = side;
            if( sides [ side ] )
                area[ side ] = area[ sides [ side ] ] - areaSize;
            else
                area[ side ] = areaSize;
            with( area )
                surface = ( x2 - x1 ) * ( y2 - y1 );
            this._itemAreas.push( area );
        }
    },

应该是:

area.surface = ( x2 - x1 ) * ( y2 - y1 );

area.surface = ( area.x2 - area.x1 ) * ( area.y2 - area.y1 );

【问题讨论】:

  • 你有两个可能可行的建议,为什么不两个都试试呢?
  • with 适用于块中的所有变量,无论它们是被读取还是写入,它们都被尝试作为对象的属性进行访问。然而,这真的取决于area 对象是什么(它有什么属性)。

标签: javascript with-statement


【解决方案1】:
area.surface = ( area.x2 - area.x1 ) * ( area.y2 - area.y1 );

是解决方案。我找到了相同代码的另一个版本,其中有人已经修复了问题并因此提供了解决方案。

感谢@Bergi 的解释。

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 2011-10-10
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2014-05-12
    • 1970-01-01
    相关资源
    最近更新 更多