类型转换
一, 为什么需要类型转换
JavaScript是弱数据类型:JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。坑:使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。
console.log('1000e'+‘2000') // 输出结果100002000
此时需要转换变量的数据类型。
通俗来说,就是把一种数据类型的变量转换成我们需要的数据类型。
隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
- 规则: +号两边只要有一个是字符串,都会把另外一个转成字符串 除了+以外的算术运算符比如-*/等都会把数据转成数字类型
- 缺点: 转换类型不明确,靠经验才能总结
小技巧:
+号作为正号解析可以转换成数字型 任何数据和字符串相加结果都是字符串
在下面的实际案例中感受一下,例如:
<script>
console.log(11 + 11)
console.log('11'+ 11)console.log(11 - 11)
console.log('11'- 11)console.log(1 * 1)
console.log('1'* 1)
console.log(typeof‘123')console.log(typeof +'123'console.log(+'11'+ 11)
</script>
上式最终结果为
22 1111 0 1 1 string number 22
显式转换
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
概念: 自己写代码告诉系统该转成什么类型
转换为数字型 Number(数据)
√ 转成数字类型
√ 如果字符串内容里有非数字,转换失败时结果为NaN(Nota Number)即不是一个数字
√ NaN也是number类型的数据,代表非数字
parselnt(数据) 只保留整数
parseFloat(数据) 可以保留小数
运算符
一, 赋值运算符
目标:能够使用赋值运算符简化代码
赋值运算符:对变量进行赋值的运算符
已经学过的斌值运算符:= 将等号右边的值赋予给左边,要求左边必须是一个容器
其他赋值运算符:
==
-=
=*=
%=
一元运算符
我们可以有更简便的写法了 自增: 符号:++ 作用:让变量的值+1 自减: 符号:-- 作用:让变量的值-1 使用场景:经常用于计数来使用。 比如进行10次操作,用它来计算进行了多少次了。
比较运算符
- 比较运算符: 对比:
- >:左边是否大于右边 =单等是赋值
- <: 左边是否小于右边 ==是判断
- >=:左边是否大于或等于右边 ===是全等
- <=: 左边是否小于或等于右边 开发中判断是否相等,强烈推荐使用 ===
- ==:左右两边值是否相等
- ===:左右两边是否类型和值都相等 !==:左右两边是否不全等
- 比较结果为boolean类型,即只会得到true 或 false
二,运算符优先级
目标:掌握运算符优先级,能判断运算符执行的顺序
优先级 | 运算符 | 顺序 |
1 | 小括号 | () |
2 | 一元运算符 | ++ --! |
3 | 算数运算符 | 先*/%后+- |
4 | 关系运算符 | > = < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先&& 后|| |
7 | 赋值运算符 | = |
8, | 逗号运算符 | , |
目标:能使用if语句执行满足条件的代码
循环
一,if语句
- if语句有三种使用:单分支、双分支、多分支
- 单分支使用语法:
if (条件){ 满足条件要执行的代码 }
- 括号内的条件为true时,进入大括号里执行代码 小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做~
二,while循环
while循环的作用是什么?
在满足条件期间,重复执行某些代码
while循环三要素是什么?
变量起始值 终止条件(没有终止条件,循环会一直执行,造成死循环) 变量变化量(用自增或者自减)
三,循环退出
目标:能说出continue和break的区别 循环结束:
break:退出循环
continue:结束本次循环,继续下次循环
区别:
- continue 退出本次循环,一般用于排除或者跳过某一个选项的时候,可以使用continue
- break 退出整个循环,一般用于结果已经得到,后续的循环不需要的时候可以使用
四,for循环
循环体一个循环里再套一个循环,一般用在for循环里
for(外部声明记录循环次数的变量;循环条件;变化值){
for(内部声明记录循环次数的变量;循环条件;变化值){
循环体
}
}
五,几大循环对比
switch和case
1.共同点:都能实现多分支选择,多选1•大部分情况下可以互换
2.区别:
- switch...case语句通常处理case为比较确定值的情况,而if...else...语句更加灵活,通常用于范围判断(大于,等于某个范围)。
- switch语句进行判断后直接执行到程序的语句,效率更高,而if...slse语句有几种判断条件,就得判断多少次
- switch一定要注意必须是===全等,一定注意数据类型,同时注意break否则会有穿透效果。
结论:1,当分支比较少时,if...else语句执行效率高。2,当分支比较多时,switch语句执行效率高,而且结构更清晰。
for和while
区别:
- 当如果明确了循环的次数的时候推荐使用for循环
- 当不明确循环的次数的时候推荐使用while循环