# JS杂拾-03-运算式与运算子

JS杂拾-03-运算式与运算子

tags: ithome

内文摘要

  • Expressions 运算式
  • Operators 运算子

参考资料1:MDN — the Mozilla Developer Network
参考资料2:从ES6开始的JavaScript学习生活
参考资料3:Fooish 程序技术


Expressions 运算式


Operators 运算子

算术运算子 (Arithmetic Operator)

指派运算子 (Assignment Operator)

位元运算子 (Bitwise Operator)

比较运算子 (Comparsion Operator)

逻辑运算子 (Logical Operator)

  1. 三种逻辑运算符:

    • Logical AND &&: 符号左右都是true才会得到true;其中任一方false,则得到false
    • Logical OR ||:符号左右任一方为true,得到true;两方都false,才会得到false
    • Logical NOT!:原本是true,经!转换会变成false
    • !!(xxx) 可以当Boolean(xxx)
    !!'false' == !!'true'   // true  经过!!转换,两个值都是Boolean,且字串总是ture
    !!'false' === !!'true'   // true 即便使用严格比较===也是true,理由同上
    
  2. 哪些资料类型经ToBoolean会转换成falsy?

    • Undefined
    • Null
    • 0, -0, NaN
    • "" or ''
    Boolean("false"); // true
    Boolean("0");     // true
    Boolean(-0);      // false
    Boolean("''''");  // true
    Boolean('');      // false    
    
    • 去掉falsy值的小方法:
    const arr = [1, 2, 3, null, 'a', 0]
    arr.filter(Boolean)     // [1, 2, 3, 'a'] null跟0都是falsy,因此被清掉了
    arr                     // arr = [1, 2, 3, null, 'a', 0]阵列只是复制,没有被改变 (immutable)
    
  3. 短路求值(Short-circuit)

    • (&&)、(||)也称为短路求值(Short-circuit)运算符
    • (||)运算时,如果第1个运算子为"falsy"时,回传第2个运算子。否则,回传第1个运算子。
    • (&&)运算时,如果第1个运算子为"falsy"时,回传第1个运算子。否则,直接回传第2个运算子。刚好跟(||)相反
      console.log('foo' || 'bar') // 'foo'
      console.log(false || 'bar') // 'bar'
      console.log(false && 'bar') // false
      console.log( 0 || '' || 5 || 'bar') //5
      console.log(false || null || '' || 0 || NaN || 'Hello'       || undefined) //'Hello'
      
    • 常用的"指定预设值",范例:
      let a = value || 5    // 5是预设值
      

字串运算子 (String Operator)

特殊运算子 (Special Operator)

void运算子: 接收任意运算式或值

三元运算子,又称条件运算子


<<:  Day 30 Review security tools and features

>>:  [Day 30]-【STM32系列终章之不负责任地说再见】

.NET Framework4.7.2 制作 Web API 使用 [NSwag] 套件呈现 Swagger UI + JWT Authentication 及跨域处理(CORS)

本文将介绍如何使用 JWT 保持登入状态,配合 Swagger / OpenAPI 呈现。 .NET...

{DAY 15} Pandas 学习笔记 part.1

前言 Pandas 是强大的资料科学分析工具,结合前几天所学的NumPy特性 提供方便读取及使用的资...

[day-14] 认识Python的资料结构!(Part .1)

甚麽是资料结构?   资料结构(Data structure) 简单来说,就是一个含有结构的资料型别...

剪裁与遮罩-30天学会HTML+CSS,制作精美网站

有时候在制作区块时,会希望用不规则的形状呈现,以前会将图片制作成不规则形状,在放到html里面,或是...

Day 11 - Algebraic Data Types

yo, what's up? Product Type Product types 允许同时存在两种...