javascript语法基础系列之操作符


javascript语法基础系列之操作符

一、其他基本类型转换为Number类型

1.null转化成Number

1
2
3
var ret = Number(null);
console.log(ret); // 0
console.log(typeOf ret); //number

2.undefined 转化成Number

1
console.log(Number(undefined)); // NaN

3.boolean转成Number

1
2
console.log(Number(true));
console.log(Number(false));

4.String转成Number

Number()
1.如果字符串中存在除了数字和小数点以外的其他字符,则转换失败,值为NaN
2.加减号在头表示正负号
3.开头有空白字符可以过滤

1
2
3
4
5
6
7
8
9
10
11
12
13
// string -> number(Number())
console.log(Number('123')); // 123
console.log(Number('+123')); // 123
console.log(Number('-123')); // -123
console.log(Number(' 123')); // 123
console.log(Number('12.3')); // 12.3
console.log(Number(' ')); // 0

console.log(Number('12+3')); // NaN
console.log(Number('12-3')); // NaN
console.log(Number('a123')); // NaN
console.log(Number('12 3')); // NaN
console.log(Number('12..')); // NaN

parseInt()
1.将接收到的数据(一般都是字符串)转化成整数
2.转换规则:从第一个非空白字符(空格、换行、tab)开始转换,直到遇到一个非数字字符为止。
3.如果转化失败,结果为NaN
4.从第一个非空字符开始,如果第一个字符不是数字或者正负号,parseInt()就会返回NaN,因此,parseInt()转换空字符结果为NaN,但是Number返回0

1
2
3
4
5
6
7
8
9
10
11
12
13
//string ->number(parseInt())
console.log(parseInt('123')); // 123
console.log(parseInt('+123')); // 123
console.log(parseInt('-123')); // -123
console.log(parseInt(' 123')); // 123
console.log(parseInt('12.3')); // 12
console.log(parseInt(' ')); // NaN

console.log(parseInt('12+3')); // 12
console.log(parseInt('12-3')); // 12
console.log(parseInt('a123')); // NaN
console.log(parseInt('12 3')); // 12
console.log(parseInt('12..')); // 12

parseFloat()
1.将接收到的数据(一般都是字符串)转成浮点数
2.遇到的第一个小数点有效,第二个小数点就无效了

1
2
3
4
5
6
// string -> number(parseFloat())
console.log(parseFloat('12.3')); // 12.3
console.log(parseFloat('12..3')); // 12
console.log(parseFloat(' 12.3')); // 12.3
console.log(parseFloat('12.3+123')); // 12.3
console.log(parseFloat(' ')); // NaN

二、其他基本类型转为String类型

1.null转化成String

1
2
// null -> string
console.log('hello' +null); //hellonull

2.undefined转化成String

1
2
3
var str = undefined + '';
console.log(str); // undefined
console.log(typeof str) // string

3.boolean转化成String

1
2
3
// boolean -> string
console.log(true.toString()); // 'true'
console.log(typeof true.toString()); // string

3.number转化成String

1
2
3
4
// number -> string
var num = 10;
console.log('' + 1); // 1
console.log(num.toString()); // 10

三.其他基本类型转换为Boolean类型

1
2
3
4
5
6
7
8
// 绝大多数转成布尔值,结果都为true
以下这六种情况转为boolean结果为false
console.log(Boolean(0)); // false
console.log(Boolean('')); // false
console.log(Boolean(fasle)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(null)); // false

四、prompt(“ “)

prompt()接收外部的数据,默认是字符串类型
有时需要将其转化成整数
var age = parseInt(prompt(“请输入年龄”));

五、算数运算符和算数运算表达式

1.表达式:由变量、常量和运算符组成的式子
2.如何阅读表达式
功能:进行相关的运算
值:相关运算之后得到的值
3.算数运算符
+-*/、%(取余数)

*(乘)

a.如果操作数都是数值,则执行常规的乘法运算,如果结果超过JS数值范围,则返回Infinity或者-Infinity
b.NaN参与乘法运算,则结果返回NaN
c.Infinity0,返回NaN
d.Infinity与非0操作数运算时,结果返回Infinity或者-Infinity。取决于有符号操作数的符号。
e.Infinity
Infinity,结果是Infinity
f.如果有一个操作数不是数值,那么在参与运算前会先对操作数执行Number()将其转化为数值,再应用上面的规则

1
2
3
4
5
6
7
8
9
// * 乘法
console.log(2*3); // 6
console.log(NaN*3); // NaN
console.log(Inifnity*0); // NaN
console.log(Infinity*2); // Infinity
console.log(Infinity*(-2)); // -Infinity
console.log(Infinity*Infinity); // Infinity
console.log(Infinity*(-Infinity));// -Infinity
console.log("2"*3); // 6

/(除)

a.如果操作数都是数值,则执行常规的除法运算,如果结果超过JS数值范围,则返回Infienter code herenenter code hereity或者-Infinity b.NaN参与除法运算,则结果返回NaN c.Ienter code herenfinity / Infinity,结果为NaN d.0 / 0, 结果为NaN e.如果是非0的有限数被0除,则结果是Infinity或者-Infinity,取决于有符号操作数的符号enter code here`
f.如果是Infinity被任何非0 整数值除,则结果是Infinity或者-Infinity
g.如果有一个操作数不是数值,那么在参与运算前会先对操作数执行Number()将其转化为数值,再应用上面的规则

1
2
3
4
5
6
7
8
9
10
// /除法
console.log(5/3); // 1.6666666
console.log(NaN/3); // NaN
console.log(Infinity/Infinity); // NaN
console.log(0/0); // NaN
console.log(2/0); // Infinity
console.log((-2)/0);//-Infinity
console.log(Infinity/2); //Infinity
consol`enter code here`e.log(Infinity/(-2)); //-Infinity
console.log('5'/3); //1.66666

% (取余)

a.如果enter code here操作数都是数值,则执行常规的取余运算
b.如果被除数是无穷大值,而除数是有限大值,结果为NaN
c.如果被除数是有限大值,除数是0,结果为NaN
d.被除数是0,结果为0
e.如果有一个操作数不是数值,那么在参与运算前会先对操作数执行Number()将其转化为数值,再应用上面的规则

1
2
3
4
5
6
// % 取余
console.log(5%3); // 2
console.log(Infinity % 3); //NaN
console.log(3%0); // NaN
console.log(0 % 2); // 0
console`enter code here`.log('7'%3); //1

+(加)

a.如果操作数都是数值,则执行常规的加法运算
b.如果有一个操作数是NaN,则返回NaN
c.Infinity + Infinity = Infinity
d.(-Infinity) + (-Infinity) = -Infinity
e.Infinity + (-Infinity) = NaN
f.两个都是字符串,则拼接字符串
g.一个数值,一个字符串,则现将数值转为String类型,然后拼接字符串

1
2
3
4
5
6
7
8
// + 加法
console.log(5+3); // 8
console.log(NaN + 3); //NaN
console.log(Infinity + Infinity); // Infinity
console.log((-Infinity) + (-Infinity)); // -Infinity
console.log(Infinity + (-Infinity)); //NaN
console.log('hello ' + 'world'); // hello world
console.log('hello ' + 2017); // hello 2017

-减

a.如果操作数都是数值,则执行常规的减法运算
b.如果有一个操作数是NaN,则返回NaN
c.Infinity - Infinity = NaN
d.(-Infinity) - (-Infinity) = NaN
e.Infinity - (-Infinity) = Infinity
f.-Infinity - Infinity = -Infinity

1
2
3
4
5
6
7
// - 减法
console.log(5 - 2); // 3
console.log(NaN -3); // NaN
console.log(Infinity - Infinity); // NaN
console.log(-Infinity - (-Infinity)); // NaN
console.log(Infinity - (-Infinity)); // Infinity
console.log(-Infinity - Infinity); // Infinity

4.算术运算表达式
变量1 算数运算符 变量2
5.功能:进行相关的数学运算,不能改变变量的值
6.值:相关数学运算之后的结果

六、自增自减运算符

1.自增

自增运算符 ++
自增运算表达式
变量 ++ 后++,先取值再加1,表达式的值是变量+1之前的值
++ 变量,先++,先加1再取值,表达式的值是变量+1之后的值
功能:两种都是实现变量的值自动加1

2.自减

自减运算符 –
自减运算表达式
变量– 后–,先取值再减1,表达式的值是变量减1之前的值
–变量 先–,先减1再取值,表达式的值是变量减1之后的值
功能:两种都是实现变量的值自动减1

七、赋值运算符和赋值运算表达式

赋值运算符 =
赋值运算表达式 变量 = 表达式
功能:实现对变量的赋值操作

复合运算符
+= a+=1 === a=a+1
-= a-=1 === a=a-1
= a=1 === a=a*1
/= a/=1 === a=a/1
%= a%=1 === a=a%1
赋值运算结束之后,变量的值

八、关系运算符和关系运算表达式

关系运算符
>、>=、<=、
== 只比较数值,不比较类型。比较之前会进行类型统一
=== 数值和类型都要相等才可
关系运算表达式: 表达式1 关系运算符 表达式2
功能: 计算表达式1和表达式2的关系值
值: 如果关系成立,值为真,否则值为假
注意: 关系运算符不能连用。例如 1 <= num <= 5 会存在语法错误

九、逻辑运算符

逻辑与(&&)有一个条件为假,则结果为假
逻辑或(||)有一个条件为真,则结果为真
逻辑非(!)取非运算

十、三目运算和三目运算符

三目运算符
三目运算表达式: 表达式 ? 表达式1 : 表达式2
功能:计算”表达式”的值,如果”表达式”的值为真,则计算表达式1的
值,否则计算表达式2的值
值:如果”表达式”的值为真,则取表达式1的计算值作为结果,否则取表
达式2的计算值作为结果