簡體   English   中英

JavaScript布爾表達式中的多個比較運算符

[英]Multiple comparison operators in a JavaScript boolean expression

我正在嘗試檢查變量y是否小於x且大於z,但是這個布爾表達式由於某種原因返回false。 JavaScript是否允許像這樣簡潔地編寫布爾表達式? 如果是這樣,那么正確的語法是什么?

x = 2;
y = 3;
z = 4;

if(x > y > z){
    alert("x > y > z"); //Nothing happens!
}

嘗試使用邏輯運算符:

if (x > y && y > z) {

保證兩個條件都是真的。

演示: http //jsfiddle.net/3sxvy/

如果你需要把它放到一個函數中,你可以嘗試:

function compareNumbers(direction) {
    var inOrder = (function () {
        if (direction === "desc") {
            return function (current, before) {
                return current <= before;
            };
        } else if (direction === "asc") {
            return function (current, before) {
                return current >= before;
            };
        }
    })();
    var valid = true;
    for (var i = 2; i < arguments.length; i++) {
        if (!inOrder(arguments[i], arguments[i-1])) {
            valid = false;
            break;
        }
    }
    return valid;
}

if (compareNumbers("desc", 33, 5)) {
    console.log("Good");
} else {
    console.log("Bad");
}

演示: http //jsfiddle.net/kn6M4/1/

你要

if(x > y && y > z){
    alert("x > y > z"); //Nothing happens!
}

Javascript將嘗試從左到右解析您的原始語句,您將最終將z與布爾值進行比較,然后將其解析為數字(0或1)。

所以你的原始陳述相當於

if( (x > y && 1 > z) || (x <= y && 0 > z))

將測試更改為

if (x > y && y > z){

當你寫(x > y > z) ,這相當於((x>y)>z) ,所以你要將布爾值(x>y)z 在此測試中, true轉換為1 ,不大於2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM