常用JavaScript运算符
运算符也叫操作符,通过运算符可以对一个或者多个值进行运算,并获取运算结果。比如说 typeof 就是一个运算符,该运算符可以来获得一个值得类型,它会将该值得类型以字符串的形式返回。 例如:
1
2
3var a = 123;
var result = typeof a;
console.log(result);
. 算术运算符:
1) 当对非Number值进行运算时,会将这些值转换为Number类型,然后再运算(字符串加法除外)。
2) 任何值和NaN做运算都得NaN.
3) 任何的值和字符串做加法操作,都会先转换为字符串,然后再和字符串做拼串操作,我们可以利用这一特点,来将任意一个数据类型转换为String类型,即任意字符类型加上一个空串即可转化为String类型,这是一种隐式类型转换,由浏览器自动完成,实际上它也是调用了String()函数。
4) 任何值做 -,*,/ 运算时都会自动转换为Number;我们可以利用这一特点做隐式转换,可以通过为一个值减0,除1,乘1来将其转换为Number类型。
+:加号可以对两个值进行加法运算,并将结果返回
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26result = 456 + 100;
console.log(result);
//结果为556
//注意以下输出结果都是控制台输出结果
result = true + false;
//结果为:1
result = true + 1;
//结果为2
result = 2 + null;
//结果为2
result = 2 + NaN;
//结果为NaN
/*如果对两个字符串做加法运算,则会做拼串操作*/
result = "123" + "456";
//结果为"123456"
result = 123 + "12";
//结果为 "12312"
result = true + "hello";
//结果为"truehello"
var a = 123;
a = a + "";
//结果为"123"
result = 1 + 2 + "3";
//结果为"33",从左向右依次计算
result = "1" + "2" + 3;
//结果为 "123"-:减号对两个值进行减法运算,并将结果返回
1
2
3
4result = 100 - true;
//结果为 99
result = 100 - "1";
//结果为99(字符串转换为Number)*:乘法运算
1
2
3
4
5
6result = 2 * "8";
//结果为16
result = 2 * undefined;
//结果为NaN(undefined转换为Number类型值为NaN)
result = 2 * null;
//结果为0/:除法运算
1
2
3
4result = 4 / 2;
//结果为2
result = 3 / 2;
//结果为1.5%:取模运算
1
2
3
4result = 9 %3;
//结果为0
result = 9 % 4;
//结果为1
一元运算符
一元运算符只需要一个操作数
+:正号:不会对数值产生任何影响;但可以对其他数据类型使用正号,使其转换为Number,原理与Number()函数一样。
1
2
3
4
5
6var a =123;
a = + a;
//a的结果为 123
var a = "18";
a = + a;
//a的值为18-:负号:对于Number值取反,对于非Number值,先转换为Number,再运算
1
2
3
4
5
6var a =123;
a = - a;
//a的结果为 -123
var a = true;
a = -a;
//a的值为 -1
.逻辑运算符
Js中提供了三种逻辑运算符
!:可以对一个值进行非运算,即对一个布尔值进行取反操作。若对非布尔值进行运算,则会先转换为布尔值,再运算;可以对任意数值取两次反来将其变为布尔值.
1
2
3
4
5
6var a = true;
a = !a
//a的值为false
var a = "hello"
a = !! a;
// a的值为true&&:对运算符两侧的值进行运算并返回;Js中的”与”属于短路的与,如果第一个值为false,则不会看第二个值。非布尔值进行与运算,会现将其转换为布尔值再运算,并且返回原值
1
2
3
4
5
6
7
8
9
10
11
12var a = true && false;
//a的值为 false
var a = 1 && 2;
//a的值为2
var a = 4 && 5;
//a的值为5;若两个值都为true,则返回后边的一个
var a = 0 && 4;
//a的值为0;如果有false,则返回false对应值
var a = NaN && 0
//a的值为NaN
var a = 0 & NaN;
//a的值为0;若两个值均为false,则返回靠前的一个||:可以对两侧的值进行或运算并返回结果,有true返回true,全false则为false,Js中或为短路或,如果第一个值为true,则不会看第二个值。非布尔值进行与运算,会现将其转换为布尔值再运算,并且返回原值。
1
2
3
4var a = 1 || 2;
//a的值为1
var a = NaN || 1;
//a的值为 1; 如果第一个值为false,则直接返回第二个值
赋值运算符
=:可以将等号右侧的值赋给左侧变量
1
2var a =123;
//a的值为 123+= , -= , *= , /= , %=
1
2
3
4
5
6
7
8
9
10var a += 5;
//相当于 var a = a + 5;
var a -= 5;
//相当于 var a = a -5;
var a *= 5;
//相当于 a = a * 5;
var a /= 5;
//var a = a / 5;
var a %= 5;
//var a = a % 5;
关系运算符
通过关系运算符可以比较两个值之间的大小关系,如果关系成立,会返回true,否则返回false;对于非数值进行比较时,会先将其转换为数字,然后再比较
任何值和NaN做任何比较都是false
如果符号两侧的值都是字符串,不会将其转换为数字进行比较,而是分别比较字符串中字符的Unicode编码(Unicode编码:(http://www.unicode.org/charts/)),比较编码是一位一位进行比较的,可以利用这种方法对英文进行排序。
如果比较两个字符串型数字,可能得不到预期的结果,所以在比较两个字符串型数字是一定一定要注意转型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20/* 大于号 > */
var result = 5 > 5;
//返回false
var result = 1 > true;
//返回false
var result = 1 >= true;
//返回true
var result = 5 > 4;
//返回true
/* 大于等于号 >= */
var result = 5 >= 5;
//返回true
/*小于号 < */
var result = 5 < 4;
//返回false
/* 小于等于号 <= */
var result = 4 <= 5;
//返回 true
/*比较字符串型数字,可以加+转型得到正确结果*/
var result = "11111" < +"5";
相等运算符
用来比较两个值是否相等 ,若相等会返回true,否则返回false
使用 == 来表示相等运算,当使用 == 来比较两个值时,,如果两个值得类型不同,则会自动进行类型转换,将其转换为相同的类型,然后比较。
Js中可以使用isNaN()函数来判断一个变量的值是不是NaN,因为NaN不和任何值相等,包括它本身。
!=:不相等,不相等返回true,否则返回false;如果变量类型不同也会进行自动转换
===:全等,和==类似,但不会做类型的自动转换,如果类型不同,直接返回false
!==:不全等。和!=类似,不会自动做类型转换,如果类型不同,直接返回true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30/* -------------- 相等----------------*/
console.log( 1 == 1 );
//返回true
console.log("1" == 1 );
//返回true
console.log(true = "1");
//返回true
/*特殊值*/
console.log(null == 0 );
//返回false
console。log( undefined == null);
//返回true
/*NaN不和任何值相等,包括它本身*/
console.log( NaN == NaN );
//false
console.log(NaN == undefined);
//false
console.log(isNaN(NaN))
//true
/*--------------不相等-----------------*/
console.log(5 != 10);
//true
console.log("1" != 1);
//false
/*---------------全等-----------------*/
console.log("123" === 123);
//false
/*------------不全等-------------------*/
console.log(1 !== "1");
//true
条件运算符
- 条件运算符也叫三元运算符
- 语法: 条件表达式 ? 语句1 :语句2;
- 条件运算符在执行时,首先对条件表达式进行求值,如果该值为true,则执行语句1并返回结果,否则执行语句2并返回结果。
- 如果条件表达式的求值结果是一个非布尔值,会现将其转换为布尔值再运算。