JavaScript 数据类型转换;运算符,表达式.

Day02 笔记

1 数据类型转换

1.1 数据类型转换的规则

① 其他类型转为 number 类型
1、string 转为 number 类型的规则:
	① 纯数字字符串会转为对应的数字,十六进制表示以及科学计数法表示的数字都是纯数字。
	② 空字符串转为数字 0 。
	③ 其他字符串转为 NaN 。
	注:  string 类型数据转为 number 类型数据的时候会自动去掉两端的空格,剩下部分按照以上规则转换。
	
2、boolean 转为 number 类型的规则:
   true   ->   1
   false  ->   0

3、null 转为 number 类型的规则:
   null   ->   0

4、undefined 转为 number 类型的规则:
   undefined  ->   NaN
② 其他类型转为 string 类型
数据什么样就转为什么样的字符串
③ 其他类型转为 boolean 类型
1、number 转为 boolean 类型的规则:
   0 和 NaN 转为 false ,其他数字转为 true 。

2、string 转为 Boolean 类型的规则:
   空字符串转为 false,其他字符串转为true 。

3、null 转为 Boolean 类型的规则:
   null  ->  false 

4、undefined 转为 Boolean 类型规则:
   undefined  ->  false 

注意:

​ 0、NaN、空字符串、null、undefined 转为布尔值会转为 false ,

​ 其他数据转为布尔值都是 true。

1.2 强制类型转换(显式转换)

① 强制把其他类型转换为number 类型的函数
Number()
parseInt()
parseFloat()

parseInt()、parseFloat() 和 Number() 的区别:

1、parseInt() 和 parseFloat() 用于提取字符串的数字,所有非字符串类型得到的都是 NaN 。

2、纯数字字符串转为对应的数字; 以数字开头的字符串转为开头的数字;

​ 其他字符串都是NaN (空字符串也是NaN )

注意:

​ 1、Number() 的转换规则 是标准的转换规则。

​ 2、可以使用 parseInt() 来对某个数字进行取整(会把小数部分舍去)

② 强制把其他类型转换为 string 类型的函数
String()
③ 强制把其他类型转换为Boolean 类型的函数
Boolean()

1.3 自动类型转换(隐式转换)

​ 1、JavaScript 作为弱类型编程语言,支持数据类型自动转换。

​ 2、数据参与运算,数据不符合运算所要求的类型,数据会根据运算要求的类型自动运算。

​ 3、运算所要求的的数据类型由运算符决定。

​ 4、自动类型转换的规则与强制类型(Number、String、Boolean)转换的规则是一样的。

2 运算符

2.1 运算符和表达式

① 运算符

运算符就是参与运算的符号,像+-*/等。

与运算符一起运算的变量、直接量、表达式称之为操作数

② 表达式

1、表达式是变量或者直接量与运算符组成的式子,表达式会有一个计算结果,称之为表达式的值,即表达式是有值的。

2、最简单的表达式是“原始表达式”,如 直接量、变量名、关键字等。

3、复杂表达式由简单表达式组成,运算符可以将简单表达式组合成复杂表达式。

4、注意带有副作用的表达式,这样的表达式除了有表达式的计算结果之外,还会对表达式中的变量产生影响。

2.2 运算符的分类

① 按照运算符的需要的操作的个数
一元运算符 / (一目运算符)
二元运算符 / (二目运算符)
三元运算符 / (三目运算符)
② 按照运算符的功能
算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
其他运算符

2.3 运算符(按照功能)

① 算术运算符
运算符含义操作数个数操作数的类型要求组成的表达式的值的类型有/无副作用
+加号2numbernumber
-减号2numbernumber
*乘号2numbernumber
/除号2numbernumber
%取余(取模)2numbernumber
+正号1numbernumber
-负号1numbernumber
++累加1numbernumber
累减1numbernumber

正号运算符:

通常会使用正号运算符来把其他类型的数据转为 number 类型,利用运算符自动类型转换。

累加运算符:

累加和累减都是一元运算符,操作数必须以变量的形式表示,具有副作用。

累加和累减的符号可以在操作数前面也可以在操作数后面,对操作数产生的副作用是一样的,但是所组成的表达式的值不同。

运算符在操作数前面:表达式取操作数累加或累减之后的值作为表达式的值。

**运算符在操作数后面:**表达式取操作数累加或累减之前的值作为表达式的值。

② 关系运算符(比较运算符)
运算符含义操作数个数操作数的类型要求组成的表达式的值的类型有/无副作用
>大于2number、stringboolean
<=大于等于2number、stringboolean
<小于2number、stringboolean
<=小于等于2number、stringboolean
==等于2number、其他类型boolean
!=不等于2number、其他类型boolean
===全等2所有类型boolean
!==不全等2所有类型boolean

两个操作数比较大下的规则:

​ 1、如果两个操作数的类型不一样,各自自动转换为 number 类型进行比较。

​ 2、如果两个操作数都是 string 类型,按照string类型比较大小的规则进行比较。

string 类型的数据比较大小的规则:

​ 1、比较的是字符对应的 unicode 编码,unicode 编码是数字,可以比较大小。

​ 2、字符串比较是按一位一位的比较,如果一个操作数第一位的字符比另一个操作第一位字符的unicode 编码大, 该操作整体都大。

相等和不相等的判断规则:

​ 1、如果两个操作数类型不一致,自动转为 number 之后进行比较。

​ 2、如果两个操作数类型一致,直接看是不是一样的。

全等和不全等的判断规则:

​ 1、如果两个操作数类型不一致,直接返回false,不会进行自动类型转换的。

​ 2、如果两个操作数类型一致,比较是否一样。

null 进行相等(==)判断的时候,非常特殊:

console.log(null == null);  	 // true
console.log(null == 0);     	 // false 
console.log(null == false); 	 // false
console.log(null == '');    	 // false
console.log(null == undefined);  // true 
③ 逻辑运算符
运算符含义操作数的个数操作数的类型要求组成的表达式的值的类型有/无副作用
&&逻辑与2任何类型取其中一个操作数作为表达式的值
||逻辑或2任何类型取其中一个操作数作为表达式的值
逻辑非1booleanboolean

逻辑与组成的表达式的值的计算规则:

​ 1、如果第一个操作数不成立,取第一个操作数作为表达式的值。

​ 2、如果第一个操作数成立,取第二个操作数作为表达式的值。

逻辑或组成的表达式的值的计算规则:

​ 1、如果第一个操作数不成立, 取第二个操作数作为表达式的值。

​ 2、如果第一个操作数成立,取第一个操作数作为表达式的值。

④ 赋值运算符
运算符含义操作数个数操作数的类型要求组成的表达式的值的类型有/无副作用
=赋值2无要求。左边的操作数必须是变量变量(左边操作数)的值作为表达式的值
+=赋值求和2无要求。左边的操作数必须是变量变量(左边操作数)的值作为表达式的值
-=赋值求差2无要求。左边的操作数必须是变量变量(左边操作数)的值作为表达式的值
*=赋值求积2无要求。左边的操作数必须是变量变量(左边操作数)的值作为表达式的值
/=赋值求商2无要求。左边的操作数必须是变量变量(左边操作数)的值作为表达式的值
%=赋值求余2无要求。左边的操作数必须是变量变量(左边操作数)的值作为表达式的值
+=赋值连接2string, 左边的操作数必须是变量。变量(左边操作数)的值作为表达式的值

总结:

​ 1、赋值运算符要求左边的操作数必须是变量,右边的操作数变量、直接量、表达式都可以。

​ 2、赋值运算符都有副作用,使用的就是赋值运算符的副作用,左边操作数会被修改。

​ 3、赋值运算符组成的表达式以左边操作数位置(修改过后的)。

⑤ 其他运算符
运算符含义操作数个数操作数的类型组成的表达式的值的类型有/无副作用
typeof判断数据的类型1任意类型string
,逗号2
+字符串连接符2stringstring
?:比较运算符3任意类型取第二个操作数或者第三个操作数作为表达式的值

+ 符合具有3个含义:

  1. 如果操作数只有一个,+ 表示正号运算符。
  2. 如果操作数两个,且没有任何一个操作数是字符串,+ 表示加号。
  3. 如果操作数两个,只要有一个操作数是字符串,+ 表示字符串连接符。

?:三元运算符组成的表示的值的规则:

  1. 如果第一个操作数成立,取第二个操作数作为表达式的值。
  2. 如果第一个操作数不成立,取第三个操作数作为表达式的值。

2.4 运算符优先级

1、 一元运算符: ++ -- ! typeof 
2、 乘除取余、加减
3、 关系运算符
4、 逻辑运算符
5、 赋值运算符 (&& 优先级 > || 优先级)
6、 ?:

注意: 使用 () 可以提高优先级。

扩展 (ASCII)

a的ASCII码数值是97,A的ASCII码数值是65。

ASCII码值中,大小写字母码的关系是对应的大写字母与小写字母之间相差32,大写字母码<小写字母码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值