如果一个If语句包含很多方法调用,你应该给那些方法调用一个“变量名”吗?

时间:2017-08-13 09:40:35

标签: javascript jquery

例如,而不是写作,

1

// If the square in front of piece is not occupied then highlight the square  

if($(`#${currentHighlightedPiece.currentSquareLetter}${currentHighlightedPiece.currentSquareNumber-1}`).children().length === 0){
// ...
};

写作会更好吗,

2

var forwardOneOccupantSize = $(`#${currentHighlightedPiece.currentSquare[0]}${currentHighlightedPiece.currentSquare[1]-1}`).children().length;

// If the square in front of piece is not occupied then highlight the square  

if(forwardOneOccupantSize === 0){
    // do stuff
}

  1. 更具“描述性”但包含更多代码行,以实现相同的目标。

2 个答案:

答案 0 :(得分:1)

决定将其作为答案提供更多信息:)

  1. 如果您不需要重新计算 - 是的,将值保存在变量中会好得多。您的代码将更具可读性,其他程序员(甚至您)将来需要更少的时间来理解/更改/修复此代码。

  2. 如果值可能会改变(当你查看元素的维度/位置时这是很常见的) - 使用函数会更好。

  3. function checkSpecificContainerNumberOfChildren() {
        return $(`#${currentHighlightedPiece.currentSquareLetter}${currentHighlightedPiece.currentSquareNumber-1}`).children().length === 0;
    
    }
    
    if(checkSpecificContainerNumberOfChildren()){
        // ...
    };
    

    由于您谈论的DOM可能会随着时间的推移而发生变化 - 最好为该调用使用一个函数。

答案 1 :(得分:0)

如果您只需要一次检查(如果您不需要重新计算),则可以将支票放入if语句中。

如果您需要多次结果(如循环中),变量会更漂亮。但是,如果函数的结果可以更改,则应该小心:如果将结果放在变量中,则变量的值是调用函数时函数的值。例如,如果你追踪一个位置,你就不应该这样做!

最后,如果你使用第二个解决方案,你应该声明一个常量(代码中的const)而不是变量(var),它在计算机中占据更多位置。