JS - 如果语句运算符,这甚至如何编译?

时间:2013-12-11 22:21:27

标签: javascript

我正在阅读一些javascript,并尝试使用它的一些类似的构建我正在用Java(android)进行,并且有一个if语句,我遇到了我似乎无法理解如何它甚至符合Javascript。

// Decrementing
if (mod < 0) {
    // Check tree rank requirements
    for (var i in state[tree])
        if (i != index)
            // Figure out tier, multiply by 4 to get req points
            if (state[tree][i] > 0 && 
                // Calculate points in this tree up to this tier, and
                // subtract one if we're removing from this portion
                masteryPointReq(tree, i) > treePoints(tree, masteryTier(tree, i)) - (masteryTier(tree, index) < masteryTier(tree, i)))
                return false;
}

更具体地说,我不理解的部分是第3个if语句。

if (state[tree][i] > 0 && 
                // Calculate points in this tree up to this tier, and
                // subtract one if we're removing from this portion
                masteryPointReq(tree, i) > treePoints(tree, masteryTier(tree, i)) - (masteryTier(tree, index) < masteryTier(tree, i)))
                return false;

“ - ”运算符在这方面做了什么,它是如何不破坏if语句的?我对Javascript的了解仅限于修改,所以不多。

2 个答案:

答案 0 :(得分:0)

它总和为整数

var a = 3;
var b = 4;
console.log(5 - (a > b));// a > b == false
// 5
console.log(5 - (b > a));// b > a == true
// 4

false = 0,true = 1 因此评论:

// subtract **one** if we're removing from this portion

答案 1 :(得分:0)

第三个if语句也是如何在JavaScript中编写条件的可能方式。 如果应该执行的代码是单个指令,则不需要大括号。 但从一个角度来看,这是一个不太好看的风格如果你打算从jshint或jslint传递代码。