如何用JavaScript编写内联IF语句?

2020/10/04 17:21 · javascript ·  · 0评论

如何if在JavaScript中使用内联语句?也有内联else语句吗?

像这样:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}

您不一定需要jQuery。仅JavaScript就能做到这一点。

var a = 2;
var b = 3;    
var c = ((a < b) ? 'minor' : 'major');

c变量将是minor如果该值true,并且major如果该值是false


这称为条件(三元)运算符。

https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Operators/Conditional_Operator

有一个三元运算符,如下所示:

var c = (a < b) ? "a is less than b"  : "a is not less than b";

对于if内联编写语句,其中的代码应仅是一条语句:

if ( a < b ) // code to be executed without curly braces;

您也可以仅使用逻辑运算符来近似if / else。

(a && b) || c

上面的内容与说的大致相同:

a ? b : c

当然,与以下内容大致相同:

if ( a ) { b } else { c }

我之所以这么说是因为这种方法有一个区别,即您必须知道的值b将被评估为true,否则您将始终得到c基本上,您必须意识到要出现​​的部分if () { here }现在已经成为您放置的条件的一部分if ( here ) { }

由于JavaScript传递/返回形成逻辑表达式的原始值之一的行为,上述情况是可能的,而该值取决于运算符的类型。某些其他语言(如PHP)会继续执行操作的实际结果,即true或false,这意味着结果始终为true或false。例如:

14 && 0          /// results as 0,  not false
14 || 0          /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4,  not true
true && ''       /// results as ''
{} || '0'        /// results as {}

与普通的if语句相比,一个主要好处是前两种方法可以在参数的右侧进行操作,即作为赋值的一部分。

d = (a && b) || c;
d = a ? b : c;

if `a == true` then `d = b` else `d = c`

使用标准if语句实现此目的的唯一方法是复制该分配:

if ( a ) { d = b } else { d = c }

您可能会问为什么某些简单情况下您可能不会使用逻辑运算符而不是三元运算符,除非您想确定a并且b都正确。您还可以使用Logical运算符来实现更简化的复杂条件,使用嵌套三元运算会变得非常混乱……然后再次重申,如果您希望代码易于阅读,那么两者都不是那么直观。

用简单的英语解释语法:

if(condition){
    do_something_if_condition_is_met;
}
else{
    do_something_else_if_condition_is_not_met;
}

可以写成:

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>

parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );

如果只需要内联IF(不带ELSE),则可以使用逻辑AND运算符:

(a < b) && /*your code*/;

如果还需要ELSE,请使用其他人建议的三元运算。

您可以在JavaScript中这样做:

a < b ? passed() : failed();

仅供参考,您可以编写条件运算符

var a = (truthy) ? 1 : (falsy) ? 2 : 3;

如果您的逻辑足够复杂,那么您可以考虑使用IIFE

var a = (function () {
  if (truthy) return 1;
  else if (falsy) return 2;
  return 3;
})();

当然,如果您计划多次使用此逻辑,则需要将其封装在一个函数中以保持美观和DRY。

我经常需要通过使用以下条件来为每个条件运行更多代码:( , , )可以执行多个代码元素:

var a = 2;
var b = 3;
var c = 0;

( a < b ?  ( alert('hi'), a=3, b=2, c=a*b ) : ( alert('by'), a=4, b=10, c=a/b ) );

要添加到此,您还可以使用带&&和||条件的内联条件 操作员。像这样

var a = 2;
var b = 0;

var c = (a > b || b == 0)? "do something" : "do something else";

内联,如果:

(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')

真实结论:假设成立时执行的陈述

假结论:假设为假时执行的语句

你的例子:

var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');

问题本质上不是:我可以写以下内容吗?

if (foo)
  console.log(bar)
else
  console.log(foo + bar)

答案是,是的,以上将翻译。

但是,请谨慎执行以下操作

if (foo)
  if (bar)
    console.log(foo)
  else 
    console.log(bar)
else 
  console.log(foobar)

请确保将歧义代码包装在大括号中,因为上面的代码将引发异常(并且类似的排列将产生不良行为)。

本文地址:http://javascript.askforanswer.com/ruheyongjavascriptbianxieneilianifyuju.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!