Javascript或jQuery:在if语句中赋值

时间:2014-03-14 09:47:47

标签: javascript jquery html function if-statement

我很好奇我是否可以在 if statement 中分配值,有点:

if (a=jQuery("#user > .mask.fix > .a1").css('display')!='none'){
   b = a+'hello';
   //b=jQuery("#user > .mask.fix > .a1").css('display')+'hello'; //the same thing but  slower because of access through DOM again, right?
}

我已经在Chrome控制台中测试了这种结构,看起来很有效。我只是希望有人确认它在javascript中甚至在jQuery中都有效。

谢谢。

2 个答案:

答案 0 :(得分:3)

  

我已经在Chrome控制台中测试了这种结构,看起来很有效。

不,你写的第一个块并不是你认为它做的。它会将比较结果分配给a display值。因此,a最终会以truefalse结尾,而不会"none"或类似。要分配和然后测试,您需要在()部分周围(a = ...)

  

我只是希望有人确认它在javascript中甚至在jQuery中都有效。

jQuery是一个库,而不是一种语言。我们在这里谈论JavaScript。

可以这样做(使用()):

if ((a=jQuery("#user > .mask.fix > .a1").css('display'))!='none'){
   b = a+'hello';
}

...但这更容易阅读和调试:

a=jQuery("#user > .mask.fix > .a1").css('display');
if (a!='none'){
   b = a+'hello';
}

答案 1 :(得分:0)

你可以,但对于其他程序员和任何linting工具来说,这看起来都是错误的:

代码:

var selected = jQuery("#user > .mask.fix > .a1").css('display');

if (selected !== 'none') {
    b = selected + 'hello';
}

只会运行一次jQuery,但要更清洁。