==========================================
1、数据类型的转换
2、运算符和表达式
==========================================
1、数据类型转换
1、弱类型
由数据来决定数据类型(JS)
var num;//undefined
num=12;//number
num="你好";//string
num=false;//boolean
强数据类型(C、C++...):由数据类型来决定数据
1 、typeof() 函数
作用:获取指定数据的数据类型
语法:
typeof(变量) 或者 typeof 变量;
使用:
var result = typeof(变量);
2、隐式转换
不同类型的数据在计算过程中会自动进行转换
特点:
任何一种数据类型的数据,再与string做“+”运算时,都会转换成 string,再做连接
数字与布尔类型做加减时,会将boo转换为num
数字与未定义做加减时,NaN
布尔与未定义做加减时,NaN
NaN : Not a Number , 不是一个数字
函数:isNaN(数据)
作用:判断数据是否为 非数字类型(只判断数值,与类型无关) ,如果是非数字,返回true,是数字返回false
问题:将字符串25转换为 数字25,再做加法运算-------强制转换
3、强制转换(显示转换)
由JS提供的一组转换函数来完成数据类型的转换
1、toString()
转换成字符串,任一数据类型的数据均可转换为string类型
语法:数据(变量).toString() ex:num.toString();
2、parseInt(数据)(能转的就转,不能转的就拉倒)
将数据转换为number类型(整数)
碰到第一个非整数字符,则停止转换 ex:var str = "25"; parseInt(str);
如果无法转换时,转换的结果为NaN
3、parseFloat(数据)(能转的就转,不能转的就拉倒)
将数据转换为number类型(小数)
碰到第一个非小数点或数字字符,则停止转换,
4、Number(数据)
将一个数据解析为number类型
注意:如果数据中包含非法字符(非0~9和小数点),则返回NaN
Number("25") : 25
Number("25.5") : 25.5
Number("25.5abc") : NaN(特点)
===========================================运算符和表达式=====================================
2、运算符和表达式
1、运算符
做数据的运算
2、表达式
由运算符和操作数所组成的式子,称之为表达式
var a = 5;//赋值表达式
var b = 10;//赋值表达式
a+b;//算术表达式
注意:每一个表达式,都有值
console.log(a+b);
b=a=a+b;(从右往左看)
console.log(a=a+b);
3、运算符分类
1、算术运算符
+,-,*,/,%
ex:
1、
var a="15";
var b="13";
var result=a-b;//2
注意:
-,*,/,%
如果两边的操作数不是number类型,会试图通过 Number()先进行转换,如果无法转换成Number类型,结果则为NaN
++(自增),--(自减)
++:在自己值的基础上做加1操作
--:在自己值的基础上做减1操作
var num=5;
num++; 作为后缀,先去使用变量的值,然后对其进行自增操作( var num = 1; console.log(num++); 打印出的结果为5,存的为6;)
++num; 作为前缀,先对变量进行自增操作,然后再使用变量的值
优先级:
先*,/,%,再+,-
想提升优先级:()
ex:
1、var result=35+2*18/3+12/6%4
=35+12+2 = 49
2、var result=(35+2)*(18/(3+3))/6%4
=37*3/6%4
2、关系运算符
1、运算符
>,<,>=,<=,==(判断等于),!=
===(全等),!==(不全等)
=== 与 ==的区别:
1、==
只判断数值,不判断类型
"35"==35 结果为 true
2、===
判断 类型以及数值 是否都相等
"35"===35 结果为 false
由关系运算符组成的表达式称之为关系表达式,关系表达式的结果都是boolean类型
2、特殊注意
1、字符串 和 数字比较大小关系时
先将字符串通过Number()转换成数字再进行比较
2、字符串 和 字符串比较大小关系时
实际上是比较每位字符的Unicode码
张三丰
张无忌
3、NaN参与关系比较时,结果一律为 false
3、isNaN 函数
判断一个数据是否为非数字
isNaN()
3、逻辑运算符
1、作用
多条件之间的判断关系
2、逻辑运算符
逻辑非 : !
逻辑与 : &&
逻辑或 : ||
逻辑与:
判断两个条件,如果两个条件的值都为true的话,整个表达式的结果为true,如果有一个条件的结果为false,整个表达式的结果就为 false
ex:
如果 笔试成绩 大于60分,并且面试成绩 也大于 60分,可以入职。
逻辑或:
判断两个条件,两个条件中,有一个条件为true,那么整个 逻辑或 的结果就为 true,否则为 false(两个结果同时为false时)
逻辑非:
对现有条件结果进行取反
非真即假
非假即真
练习:判断是数字?是英文字符?是汉字?
var num=prompt("input....");
思路:判断num的所在范围
1、num在 字符 0 到 字符9之间,说明是数字
2、num在字符a到字符z或者在字符A到字符Z之间,说明是英文
3、num在字符 \u4e00 到 \u9fa5 范围内,说明是 汉字
3、短路逻辑
1、&&(短路与)
如果第一个表达式的结果为false,那么第二个表达式就不用再判断,整个表达式的结果为 false
如果第一个表达式的结果为true的话,则继续判断第二个表达式的结果,并且以第二个表达式的执行结果作为整个逻辑表达式的结果。
2、||(短路或)
如果第一个表达式的结果为true的话,那么就不在继续执行第二个表达式,并且将 true作为整个逻辑表达式的结果。
如果第一个表达式的结果为false的话,则继续执行第二个表达式,并且将第二个表达式的计算结果作为逻辑表达式的结果
4、位运算
1、特点
1、做数字运算
2、将数字转换为二进制,再进行运算
2、运算符
1、&
按位 与,将两边的操作数转换成二进制,每位的数字,只有对应都为1的时候,该位的结果才为1,否则该位的结果就是0
ex:
5 & 3 ?
5:101
3:011
-----------
r:001
作用:判断一个数字的奇偶性,判断的数字与1做按位与
5 & 1?
5 :101
1 :001
-----------
1
2、|
按位或,两边的操作数转换成二进制,比较每位上的数字,两个数中有1个是1的话,该位的结果为1,否则为0
场合:向下求整
求:5 | 3
5:101
3:011
=========
111
6.5 | 0
==>
6 | 0
6:110
0:000
3、<<
按位左移,将2进制数向左移动几位,后面以0补齐
ex:
2<<1 : 4
2<<2 : 8
2<<3 : 16
0000 0000 0000 0000
0000 0000 0001 0000
4、>>
按位右移,将2进制数向右移动几位,前面补0
8>>1 : 4
0000 0000 0000 0000
0000 0000 0000 0100
8>>2 : 2
8>>3 : 1
8>>4 : 0
5、练习
计算克莱托指数(身高体重比)
公式如下:体重(kg) / (身高(m)*身高(m))
20-25 : 正常
25以上:偏胖
20以下:偏瘦
ex:
体重:85
身高:1.81
指数=85/(1.81*1.81);//25.945483
1、运算符
1、赋值运算符
1、使用"="进行赋值
注意:
赋值符号的左边,必须是变量
const PI=3.14;(特殊)
2、扩展赋值表达式
+=,-=,*=,/=,%=,&=,|=,^=
ex:
var num = 5;
num+=3; ==> num=num+3;
num-=5; ==> num=num-5;
语法:a+=b;==> a=a+b;
2、字符串连接
运算符: +
3、条件运算符(三目运算符、三元运算符)
单目运算符:!,++,--
双目运算符:+,-,*,/,%,&&,||,^,&,|,>,<
三目运算符:需要三个操作数/表达式
语法:
表达式1?表达式2:表达式3;
表达式1的运行结果应为boolean类型
若表达式1为true,则整个表达式的值为表达式2的运算结果
若表达式1为false,则整个表达式的值为表达式3的运算结果
条件表达式允许被嵌套:
判断考试成绩,如果考试成绩>=80,则输出成绩优秀,如果大于等于60分,输出成绩合格,否则输出不及格