zoukankan      html  css  js  c++  java
  • JS运算(一)

    运算符

    一元运算符:只能操作一个值的运算符

    算术运算符

    关系运算符

    逻辑运算符

    位运算符

    赋值运算符

    其他运算符

    一元运算符

    1、递增++和递减--

    var box = 100;
    ++box;    //把box累加一个1,相当于box=box+1
    --box;    //把box累减一个1,相当于box=box-1
    box++;    //同上
    box--;    //同上

    2、前置和后置的区别

    在没有赋值操作,前置和后置是一样的。但在赋值操作时,如果递增或递减运算符前置,那么前置的运算符会先累加或累减再赋值,如果是后置运算符则先赋值再累加或累减。

    var box = 100;
    var age = ++box;    //age的值为101
    var height = box++;    //height值为100    

    3、其他类型应用一元运算符的规则

    var box = '89';    box++;    //90,数值字符串自动转换成数值
    var box = 'ab';    box++;    //NaN,字符串包含非数值转成NaN
    var box = false; box++;    //1,false转成数值是0,累加就是1
    var box = 2.3;    box++;    //3.3,直接加1
    var box = {    //1,不设置toString或valueOf即为NaN
        toString: function() {
            return 1;
        }
    };    box++;

    4、加和减运算符

    加运算规则如下:

    var box = 100;    +box;    //100,对于数值,不会产生任何影响
    var box = '89';    +box;    //89,数值字符串转换成数值
    var box = 'ab';    +box;    //NaN,字符串包含非数值转成NaN
    var box = false; +box;    //0,布尔值转换成相应的数值
    var box = 2.3;    +box;    //2.3,没有变化
    var box = {    //1,不设置toString或valueOf即为NaN
        toString: function() {
            return 1;
        }
    };    +box;

    减运算规则如下:

    var box = 100;    -box;    //-100,对于数值,直接变负
    var box = '89';    -box;    //-89,数值字符串转换成数值
    var box = 'ab';    -box;    //NaN,字符串包含非数值转成NaN
    var box = false; -box;    //0,布尔值转换成相应的数值
    var box = 2.3;    -box;    //-2.3,没有变化
    var box = {    //-1,不设置toString或valueOf即为NaN
        toString: function() {
            return 1;
        }
    };    -box;

    正运算符和负运算符可像上面进行类型转换

    算术运算符

    ECMAScript定义了5个算术运算符,加减乘除求模(取余)

    如果在算术运算的值不是数值,那么后台会先使用Number转型函数将其转换为数值(隐式转换)

    1、加法

    var box = 1 + 2;    //等于3
    var box = 1 + NaN;    //NaN,只要有一个NaN就为NaN
    var box = Infinity + Infinity;    //Infinity
    var box = -Infinity + -Infinity;    //-Infinity
    var box = Infinity + -Infinity;    //NaN,正无穷和负无穷相加等于NaN
    var box = 100 + '100';    //字符串连接符,有字符串就不是加法
    var box = '您的年龄是:' + 10 + 20;    //您的年龄是:1020,被转换成字符串
    var box = 10 + 20 +'是您的年龄';    //30是您的年龄,没有被转换成字符
    var box = '您的年龄是:' + (10 + 20);    //您的年龄是:30,没有被转换成字符串
    var box = 10 + 对象;    //10[object Object],如果有toString()或valueOf()则返回 10+返回的数值

    2、减法

    var box = 100 - 70;    //等于30
    var box = -100 - 70;    //等于-170
    var box = -100 - -70;    //-30,一般写成-100 - (-70)比较清晰
    var box = 1 - NaN;    //NaN,只要有一个NaN就为NaN
    var box = Infinity - Infinity;    //NaN
    var box = -Infinity - -Infinity;    //NaN
    var box = Infinity - -Infinity;    //Infinity
    var box = -Infinity - Infinity;    //-Infinity
    var box = 100 - true;    //99,true转成数值为1
    var box = 100 - '';    //100,''转成了0
    var box = 100 - '70';    //30,'70'转成了数值70
    var box = 100 - null;    //100,null转成了0
    var box = 100 - 'Lee';    //NaN,Lee转成了NaN
    var box = 100 - 对象;    //NaN,如果有toString()或valueOf()则返回 10-返回的数值

    3、乘法

    4、除法

    5、求模(取余)

    关系运算符

    ==  !==

    比较运算符的时候,遵循以下规则:

    1)对象和对象(所指代的不是同一个对象)永远不相等

    2)对象和字符串  先将对象转换为字符串(toString),然后进行比较。  []变为""  {}变为"[object Object]"

    3)对象和布尔类型

    对象转换为字符串(toString),再换成数字(Number),布尔类型也变为数字,再进行比较。

    4)对象和数字  对象转成字符串(toString),再换成数字(Number),然后再比较

    5)数字和布尔类型  布尔类型转换为数字

    6)数字和字符串  字符串转换为数字

    7)字符串和布尔  都转为数字

    8)null和undefined是相等的(==)

    9)null或undefined,NaN和其他任何类型都不相等

    0  NaN  undefined  null  '' 在默认情况下会转换为false

    ""  " "  false  null  [] 在默认情况下会变为0

    特殊值比对表
    表达式
    null == undefined true
    'NaN' == NaN false
    5 == NaN false
    NaN == NaN false
    false == 0 true
    true == 1 true
    true == 2 false
    undefined == 0 false
    null == 0 false
    '100' == 100 true
    '100' === 100 false

    === 比较的两边不存在任何的数据类型转换,值且类型都要相等。

  • 相关阅读:
    查看CentOS版本方法
    Android中string.xml文件中设置部分字体颜色大小
    linux重启oracle 各种方法
    Duilib初级控件扩展一例: 具有鼠标滚动消息的OptionUI
    VirtualBox 安装XP虚拟机需要注意的问题
    如何让VS2012编写的程序在XP下运行
    VC 系统托盘编程,含有气泡提示
    获取文件或是文件夹的大小和占用空间
    VC++实现获取文件占用空间大小的两种方法(非文件大小)
    VC++ 获取文件属性创建时间、修改时间和访问时间
  • 原文地址:https://www.cnblogs.com/crazier/p/13348179.html
Copyright © 2011-2022 走看看