JS三元表达式

更新日期: 2019-09-28阅读: 2.4k标签: 表达式

三元表达式怎么用?

1. 赋值:
const foo = condition ? 'bar' : 'baz'
2. 执行操作:
condition
    ? (...)
    : (...)
3. 作为返回值:
function(condition) {
    return condition ? 'bar' : 'baz'
}


三元表达式怎么就有用了?

代码量会减少这是事实,配合箭头函数写函数式代码,哪个更易读这个就是主观判断了,见仁见智:

实现一个 flat 函数:
const isArr = arg => Object.prototype.toString.call(arg) === '[object Array]'
const flat = inputAny =>
  (
    isArr(inputAny[0])
      ? flat(inputAny[0])
      : [inputAny[0]]
  )
  .concat(
    inputAny.length > 1
      ? flat(inputAny.slice(1))
      : []
  )

同样的思路用 if-else:
const flat = inputAny => {
  let pre
  if (isArr(inputAny[0]) {
    pre = flat(inputAny[0])
  } else {
    pre = [inputAny[0]]
  }
  if (inputAny.length > 1) {
    return pre.concat(flat(inputAny.slice(1)))
  } else {
    return pre.concat([])
  }
}
function example() {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

function example() {
    if (condition1) { return value1; }
    else if (condition2) { return value2; }
    else if (condition3) { return value3; }
    else { return value4; }
}

vue 里面的一个方法:

根据 data.hide 配合 className 控制元素显隐:
<div class="btn" :class="hide ? '_hide' : ''">
...
btn {
    translate: ...
}
btn._hide {
    opacity: 0;
    transform: ...
}

jsx 写 react 应该很常用吧,毕竟没有 v-if v-else:

export default function () {
  return (
    <div className={ctnr}>
        condition
            ? <div>yes</div>
            : <div>no</div>    
    </div>
  )
}

链接: https://fly63.com/article/detial/6169

你真的理解==和===吗?

要想回答上述问题,必须理解js在执行==时候的一些数据转换规则和成文的规定。ECMA-262对==的约定如下,细心的你发现上面ToNumber对于Object的转换里有这么一句ToPrimitive(input argument, hint Number)

js中表达式 >>> 0 浅析

今天在看lodash的源码中slice这个函数实现的时候发现了里面有这么一行代码:>> 和 >>>有什么不一样、移位0有什么意义、Uint32类型是如何转换的

什么是后缀表达式?

后缀表达式,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。

js中两个表达式运算结果的解析: []==![] 和{}==!{}

[]==![] 感叹号!的优先级最高,因此先计算![], 其结果为 false, 所以表达式被转换成: []==false.遇到Boolean类型,需要先转换成Number类型,所以表达是变成 []==0,0是基础类型,[]是引用类型

js正则表达式之解决html解析<>标签问题

以博客写文章为例,有的时候我们不经意间写的字符串带标签,然后浏览器将其解析了,实际上我们并不希望其被解析,于是可通过核心代码解决该问题。

JS基础语法:分支语句之三元表达式

三元表达式,语法:* var 变量=表达式1?表达式2:表达式3;* 执行过程:* 表达式1的结果是true还是false,如果是true则执行表达式2,然后把结果给变量

20个稀奇古怪的 JavaScript 表达式,你要挑战回答一下嘛

JavaScript是一种非常容错的编程语言,许多在其他编程语言中不合法的表达式在JavaScript中都能正常工作。这导致了很多奇怪的代码。你想挑战它吗?

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!