zoukankan      html  css  js  c++  java
  • JS基础算数运算符

    算术运算符主要用于算数操作,算术运算符包括一元算术运算符和二元算术运算符

    一元算术运算符

    在JS中一元算术运算符包括一元加法+,一元减法-,递增++,递减--

    一元加

    一元加法运算符使用符号+表示,放在数值前面,对数值不会产生任何影响

    var num = 1;
    num = +num; // 1
    

    如果为非数值应用一元加法运算,会自动代用Number()转型函数

    var s1 = '01';
    var s2 = '1.1';
    var s3 = 'a';
    var b = true;
    var f = 1.1;
    var o = {
    valueOf: function() {
     return '-1';
    }
    }
    
    s1 = +s1; // 1
    s2 = +s2; // 1.1
    s3 = +s3; // NaN
    b = true; // 1
    f = +f; // 1.1
    o = +o;   // -1
    

    new Date()使用一元加运算,可以把日期字符串转换为毫秒数

    new Date();   // Mon Apr 23 2018 18:11:18 GMT+0800 (中国标准时间)
    +new Date();  // 1524478278112
    

    一元减

    一元减法运算主要用于表示负数

    var num = 1;
    num = -num;  // -1
    

    如果为非数值应用一元减法运算,会自动代用Number()转型函数,再将得到的数值转换为负数

    var s1 = '01';
     var s2 = '1.1';
     var s3 = 'a';
     var b = true;
     var f = 1.1;
     var o = {
     valueOf: function() {
       return '-1';
     }
    }
    
     s1 = -s1; // -1
     s2 = -s2; // -1.1
     s3 = -s3; // NaN
     b = true; // -1
     f = -f;   // -1.1
     o = -o;   // 1
    

    一元加和一元减运算符不仅用于基本的算符运算,也常用于转换数据类型

    递增

    递增运算符用于对操作数进行增量操作,运算符通过调用Number()转型函数将操作数转换为数字,然后把数字加1后的结果重新赋值给变量或数字元素或对象属性

    var num = 1;
    ++num;
    
    var num2 = 1;
    num2++;
    
    
    console.log(num); // 2
    console.log(num2); // 2
    

    增量运算符的返回值依赖于它相对于操作数的位置,当运算符在操作数之前时,称为前增量运算符,前增量运算符返回计算后的值;当运算符在操作数之后时,称为后增量运算符,后增量运算符返回计算前的值。

    var num = 1;
    var ret = ++num;
    
    console.log(num, ret)  // 2  2
    
    var num2 = 1;
    var ret2 = num2++;
    
    console.log(num2, ret2) // 2  1
    
    

    注意: ++x增量操作并不完全等于x = x + 1++运算符不进行字符串拼接,而x = x + 1会进行字符串拼接

    var num = '1';
    ++num; // 2
    
    var num2 = '1';
    num2 = num2 + 1; // '11' 字符串拼接,返回字符串
    

    递减

    同递增运算符类似,递减运算符用于减量(减1)操作,运算符通过调用Number()转型函数将操作数转换为数字,然后把数字减1后的结果重新赋值给变量或数字元素或对象属性

    var num = 1;
    --num;
    
    var num2 = 1;
    num2--;
    
    
    console.log(num); // 0
    console.log(num2); // 0
    

    当运算符在操作数之前时,返回计算后的值;当操作符位于操作数之后时,返回计算前的值。

    var num = 1;
    var ret = --num;
    
    console.log(num, ret)  // 0  0
    
    var num2 = 1;
    var ret2 = num2--;
    
    console.log(num2, ret2) // 0  1
    

    二元算数运算符

    二元算数运算符包括加法(+)、减法(-)、乘法(*)、除法(/)、求模(%)

    加法

    JS中的加法运算有很多特殊行为,不仅可以用于基本的算数运算,还可用于字符串拼接,它的特殊行为主要表现在以下几点:

    1. 如果其中一个操作数是对象,那么对象会转换为原始值。如果能通过valueOf()返回原始值,则调用valueOf()方法,如果不能则通过toString()方法执行转换。
    1 + [1, 2, 3]; // '11, 2, 3'
    
    var o = {
      valueOf: function(){
        return -1;
      },
      toString: function() {
        return 2;
      }
    }
     
    console.log(1 + o); // 0
    
    1. 对象转换为原始值后,如果其中一个操作数是字符串,另一个操作数也会转为字符串,进行字符串拼接操作
    // 原生对象调用toString()方法后转换为字符串
    1 + {};          // '1[object Object]'
    1 + [1,2,3];     // '11, 2, 3'
    1 + new Date();  // 1Mon Apr 23 2018 18:11:18 GMT+0800 (中国标准时间)
    
    '' + null;  // 'null'
    '' + true; // 'true'
    '' + undefined; // 'undefined'
    
    1. 对象转换为原始值后,如果操作数都是非字符串,则操作数将转换为数字或NaN,进行加法操作
    false + false; // 0
    true + true;   // 2
    null + null;  // 0
    undefined + undefined; // NaN
    

    注意: Infinity和符号0较为特殊

    Number.MAX_VALUE + Number.MAX_VALUE === Infinity;  // true
    +0 === -0; // true
    Infinity + (-Infinity);  //NaN
    

    减法

    减法运算只进行基本的数字运算,通过Number()转型函数将非数值类型转换为数值或NaN。

    1 - {}; // NaN
    1 - [1,2,3]; // NaN
    1 - []; // 1
    1 - undefined; // NaN
    1 - false; // 1
    1 - true; // 0
    

    在和Date对象进行运算时,加法和其他运算操作有些不同,加法运算是使用toString()转换为字符串,其他运算(减、乘、除和求余)是使用Number()转型函数将Date对象使用valueOf()转为数字

    new Date() - 1; // 1524478278111
    new Date() + 1;  // Mon Apr 23 2018 18:11:18 GMT+0800 (中国标准时间)1
    

    乘法

    乘法运算符用于计算数值的乘积,通过Number()转型函数将非数值类型转换为数值或NaN。

    1 * {}; // NaN
    1 * [1,2,3]; // NaN
    1 * []; // 0
    1 * undefined; // NaN
    1 * false; // 0
    1 * true; // 1
    Infinity * Infinity; // Infinity
    

    除法

    除法运算符用于计算第一个操作符除以第二个操作符的结果,通过Number()转型函数将非数值类型转换为数值或NaN。

    Infinity / Infinity; //NaN
    0 / 0; //NaN
    

    求模

    求模就是求余,计算第一个操作符除以第二个操作符的余数。

    求余结果同第一个操作符的符号保持一致

    5 % 2; // 1
    5 % -2; // 1
    -5 % 2; // -1
    -5 % -2; // -1
    

    被除数是Infinity,或除数是0,则求模结果是NaN

    Infinity % 2; //  NaN
    2 % 0; // NaN
    
    优秀文章首发于聚享小站,欢迎关注!
  • 相关阅读:
    centos8 安装vmware需要的内核头文件 kernel-headers.
    centos7开启ssh服务
    systemctl命令的使用及服务状态的查看
    centos WPS 字体安装
    CentOS8 使用 aliyun 阿里云 镜像站点的方法
    CentOS提示::unknown filesystem type 'ntfs'自动挂载NTFS分区的U盘或者移动硬盘
    Aria2 Centos8 安装配置
    centos7 更新Firefox版本
    线程内容详解
    进程池、进程池和多进程的性能测试、进程池的其他机制、进程池的回调函数
  • 原文地址:https://www.cnblogs.com/yesyes/p/15351349.html
Copyright © 2011-2022 走看看