title: “Js 算数运算.”
date: 2022-08-17T19:05:44+08:00
文章目录
数学运算符:
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
** | 次冥(ES2016新加) |
/ | 除法 |
% | 取余 |
++ | 自增 |
– | 自减 |
number数据类型的基本运算
按照数学中的算数方法正常运算,这了就不再叙述
自增或自减运算符的正确使用
-
如果自增或者自减表达式是独立执行,++(–)在前后的值都是一样的
var a = 2; a ++;//结果为3 ++ a;//结果为4
-
如果自增和自减运算和其他变量在一起的话,++的顺序是有影响的
-
如果++写到变量名的前面,变量先加1然后将结果带入到算式中去参与运算,且其结果会影响到该变量在后面的值,如:
var a = 1, b; b = ++a + 1 + a;//该式的结果为5 = 2 + 1 + 2
-
如果++写到变量名的后面,先赋值给表达式整体,该项过后再+1,如:
var m = 2, n; n = m++ + 2 + ++m;//该式结果为8 = 2 + 2 + 4
-
自增练习:
var a = 1;
var b = a + ++a + 1 + a + ++a;
console.log(a); //3
console.log(b); //9
var a = 5;
var b = a-- + 1 + a--;
console.log(a);//3
console.log(b);//10
var a = 4;
var b = a++ + a++ + a + 1 + a-- + 1;
console.log(a);//5
console.log(b);//23
var k = 1;
var s = k++ + k + 2 + ++k;
console.log(k);//3
console.log(s);//8
var a = 2;
var b = ++a + a++ + a++ + a + ++a + a++ + a;//b = 3 + 3 + 4 + 5 + 6 + 6 + 7 = 34
console.log(a); //7
console.log(b); //34
其他数据类型的运算
字符串之间的运算
var a = "嘿嘿";
var b = "啦啦";
console.log(a+b); // 嘿嘿啦啦 //两个字符被拼接在一起
console.log(a-b); //NaN (Not a Number)
console.log(a*b); //NaN
console.log(a/b); //NaN
console.log(a%b); //NaN
正常的number类型的数据运算时,运算符+
两边的数字(指的就是操作数)相加即可,但是当涉及到字符串时,如果运算符+
两边的操作数有一个为字符串,且另一个不为空时,此时运算符+
起到拼接作用,即把两个操作数拼接在一起,但是当出现下面这种情况时,可把字符串隐视转换为number类型的值:
var a = 2, str = '23', b;
b = a + + str//结果为25
但是,当上面的str
不为纯数字的字符串时,结果为NaN
。
除此之外,运算符-
、*
、/
、%
、==
也可以将纯数字的字符串隐视转换为number
类型:
console.log('嘿嘿' + 5 * '6');//结果为 嘿嘿30
var str1 = '22';
var str2 = '22';
var str_1 = str1 - str2;
console.log(str_1); // 0
var str_2 = str1 * str2;
console.log(str_2); // 484
var str_3 = str1 / str2;
console.log(str_3);// 1
var str_4 = str1 % str2;
console.log(str_4);// 0
// 运算符 + 其实也可以对纯数字字符串进行隐式转换:
var str_5;
str_5 = 5 + + "22";
console.log(str_5);//27
str_5 = "22" + + 2;
console.log(str_5);//222 结果表明只有特殊情况(即+操作符前面是空的时候,且操作符+后面跟纯数字字符串时可以把字符串转换为数字类型)
自增和自减运算符不能转换其类型且会报错。
布尔值之间的运算
true会被当作1计算; false当作0 计算。
var c = true; //1
var d = false;//0
console.log(c+d); //1 1+0
console.log(c-d); //1 1-0
console.log(c*d); //0 1*0
console.log(c/d); //Infinity(无穷) 1/0
console.log(c%d); //NaN 1%0
undefined之间的运算
undefined之间的运算结果都为NaN,和其他数据类型(除了拼接)之外的计算结果都是nan
var e = undefined;
var f = undefined;
console.log(e+f); // NaN
console.log(e-f); // NaN
console.log(e*f); // NaN
console.log(e/f); // NaN
console.log(e%f); // NaN
null之间的运算
null之间的运算,null会被当做0计算
var g = null;
var i = null;
console.log(g+i); //0
console.log(g-i); //0
console.log(g*i); //0
console.log(g/i); //NaN 0/0
console.log(g%i); //NaN
数据类型混合运算
console.log("嘿嘿"+6);
console.log(6+6);//12
console.log("6"+6);//66
console.log(6+6+"55");//1255
console.log(true+4); //5
console.log("true"+11);//true11
console.log(undefined+true); // NaN
console.log(null+undefined);// NaN
console.log(6+undefined); // NaN
console.log("undefined"+"undefined");//undefinedundefined
console.log("undefined"+1); //undefined1
console.log(undefined+"1"); //undefined1
console.log("哈哈"+undefined); //哈哈undefined
console.log(null+true); //1
console.log(null+"嘿嘿");//null嘿嘿
console.log("null"+1);//null1
console.log(undefined+"1")//undefined1