【问题标题】:JavaScript conditional logicJavaScript 条件逻辑
【发布时间】:2014-12-27 09:07:01
【问题描述】:

这给了我 5,错误(IE9,Windows Vista):

var a,b;
alert(a=b=5);
alert(a>=b>=5);

我对第一个没问题,但是两个条件都是真的,那怎么会是假的呢?

如果我尝试:

alert(a=b);

警报是undefined

JavaScript 是否在这里从右到左读取,即 b=5,a=b?但是第二个警报应该为真,因为 b>=5 现在为真 (=1),并且 a=5>=1。

【问题讨论】:

    标签: javascript logic


    【解决方案1】:
    a >= b >= 5
    

    被分组为

    (a >= b) >= 5
    

    a >= b 为真,在数字上下文中使用时将转换为 1。所以这相当于

    1 >= 5
    

    这是false

    如果你想进行多重比较,你应该使用:

    alert(a >=b && b >= 5)
    

    【讨论】:

    • x 用于数字上下文中
    • x 为字符串时,x++NaN
    • 试试x=true; alert(x++);
    • 知道了。是“假”数字 0 通用,还是存在跨语言问题
    • 这对许多语言都很常见:PHP、Javascript、C、C++。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2015-02-27
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多