zoukankan      html  css  js  c++  java
  • 【JavaScript知识点三】 javascript 运算符

    【JavaScript知识三】运算符

    1. 算术运算符

    1-1 运算符

    • + 功能:①对数字进行代数求和 ②对字符进行连接操作 ③将一个数字转换成字符串(数字 + 空字符串)
    • - 功能:①对操作数进行取反操作 ②对数字进行减法操作 ③将字符串转成数值(数值型字符串 - 0)
    • * 功能:对两个运算数进行乘法运算
    • / 功能:对两个运算数进行除法运算
    • % 功能:返回两个除数的余数

    1-2 复合赋值运算符

    • += 、-= 、*= 、/= 、%=

    2. 自增与自减

    2-1 功能相反

    • ++ 对唯一的运算数进行递增操作(每次加1)
    • -- 对唯一的运算数进行递减操作(每次减1)

    2-2 规则相同

    • 运算数必须是一个变量、数组的一个元素或者对象的属性
    • 如果运算符是非数值的,则运算符会将它转成数值

    2-3 符号位置决定运算结果

    • 运算数之前:先进行递增(递减)操作,再进行求值
    • 运算数之后:先求值,再进行递增(递减)操作

    3. 关系运算符

    3-1 大小关系检测

    • 运算符:< 、<= 、>= 、>
    • 操作规则:
      数值与数值的比较:比较它们的代数值
      仅一个运算数是数值:将另一个运算数转换成数值,并比较它们的代数值
      字符串间的比较:逐个字符比较它们的Unicode数值
      字符串与非数值的比较:将运算数转换成字符串比较
      运算数既非数字也非字符串:返回false
      与NaN的比较:返回false

    3-2 等值关系检测

    • 相等比较:
      ①操作符
      == 比较两个运算数的返回值看是否相等
      != 比较两个运算数的返回看是否不相等
      ②类型转换
      布尔值:true 1 false 0
      对象: 调用valueOf()基本类型
      字符串与数值的比较:字符串转换为数值
      ③比较原则
      null与undefined :相等、比较前不进行任何转换
      NaN:与任何数值都不相等包括其自身
      对象:是否属于同一对象

    • 相同比较
      ①运算符
      === 比较两个运算数的返回值及数据类型是否相同
      !== 比较两个运算数的返回值及数据类型是否不同
      ②比较原则
      值类型间比较:只有数据类型且数值相等时才能够相同
      值类型与引用类型比较:肯定不同
      引用类型间比较:比较它们的引用值(内存地址)

    4. 对象运算符

    • in:判断左侧运算数是否为右侧预算数的成员
    • instantof 判断对象实例是否属于某个类或构造函数
    • new根据构造函数创建一个新的对象,并初始化该对象
    • delete 删除指定对象的属性,数组元素或变量
    • .及[] 存储对象和数组元素
    • ()函数调用,改变运算运算符优先级

    5. 逻辑运算符

    5-1 !逻辑非

    • 返回值:
      true
      空字符串、0、null、NaN、undefined

    false
    对象、非空字符串、非0数值(Infinity)

    • 特性
      如果运算数的值为false则返回true,否则返回false
      连续使用两次,可以将任意类型转为布尔型值

    5-2 &&逻辑与

    • 规则
      第一个操作数是对象,返回第二个操作数
      第二个操作数是对象,第一个操作数值为true时返回该对象
      两个操作数都是对象,返回第二个操作数
      一个操作数是null,返回null
      一个操作数是NaN,返回NaN
      一个操作数是undefined,返回undefined

    • 特性
      当且仅当两个运算数的值都是true时,才返回true,否则返回false
      短路操作 当第一个操作数的值是false则不在对第二个操作数进行求值

    5-3 ||逻辑或

    • 规则
      第一个操作数是对象,返回第一个操作数
      第二个操作数是对象,第一个操作数值为false时返回该对象
      两个操作数都是对象,返回第一个操作数
      两个操作数是null,返回null
      两个操作数是NaN,返回NaN
      两个操作数是undefined,返回undefined

    • 特性
      当且仅当两个运算数的值都是false时,才返回false,否则返回true
      如果第一个操作数值为true,则不会对第二个操作数进行求值

    6. 位运算符

    6-1 基础知识

    • 类型
      有符号:数值位 前31为,符号位 第32位 0正数 1负数
      无符号:只能是正数,第32位表示数值,数值范围可以加大

    • 数值范围 -2147483648~2147483647

    • 存储方式
      正数:纯2进制存储,31位中每一位表示2的幂,用0补充无用位
      负数:2进制补码存储,
      补码的计算步骤:
      确定该数字的非负版本的二进制表示
      求得二进制反码,把0替换为1,把1替换为0
      在二进制反码上加1

    • 当做0来处理的特殊值:NaN,Infinity

    6-2 逻辑位运算

    • 返回值为1:
      按位非~ 0
      按位与& 对应位全为1
      按位或| 任何一位是1
      按位异或^ 既不同时为0,也不同时为1

    • 返回值为0:
      按位非~ 1
      按位与& 任何一位是0
      按位或| 对应位全0
      按位异或^ 对应位全0或全1

    6-3 位移操作

    • 左移<<
      将数值的所有位左移指定的位数
      所有空位用0补充
      左移1位对其乘2,左移2位对其乘4,以此类推

    • 有符号右移>>
      将数值的所有位右移指定的位数
      移出的位被舍弃
      保留符号位
      右移1位对其除2,右移2位对其除4,yicileixi,以此类推

    • 无符号右移>>>
      正数:与有符号右移结果相同
      负数:会出现无限大的数值
      注:无符号右移与带符号右移的区别就是 无符号始终补0

    6-4 复合赋值运算符

    • 位操作与符号结合,复合赋值不会有性能方面的提升

    7. 其它运算符

    • typeof 类型判定运算符
    • ?:条件运算符,简洁的if else
    • ,逗号,在一行语句中执行多个不同的操作
    • void 舍弃运算数的值,返回undefined作为表达式的值
  • 相关阅读:
    949. Largest Time for Given Digits
    450. Delete Node in a BST
    983. Minimum Cost For Tickets
    16. 3Sum Closest java solutions
    73. Set Matrix Zeroes java solutions
    347. Top K Frequent Elements java solutions
    215. Kth Largest Element in an Array java solutions
    75. Sort Colors java solutions
    38. Count and Say java solutions
    371. Sum of Two Integers java solutions
  • 原文地址:https://www.cnblogs.com/reamd/p/4946369.html
Copyright © 2011-2022 走看看