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、求模(取余)

 

JS运算

上一篇:Android AVD启动报错:emulator: ERROR: x86_64 emulation currently requires hardware acceleration! Please ensure Intel HAXM is properly installed and usable.


下一篇:Leetcode-5039 Moving Stones Until Consecutive(移动石子直到连续)