day14
一、数据类型转换
1.Number() 可以把其他的数据类型转成数值类型 ①把字符串类型转成数值类型 ②把布尔类型转成数值类型 ③把null和undefined转成数值类型
2.String() 把其他的类型转成字符串、toString() 把其他的类型转成字符串,括号里面可以转禁止 ①把数值转成字符串类型 ②把布尔转成字符串类型 ③把null和undefined转成字符串类型 ④toString()可以转进制
3.Boolean() 把其他的数据类型转成布尔类型 ①把数值转成布尔类型 ②把字符串转成布尔类型 ③把null和undefined转成布尔类型
4.注意点: ①如果字符串里面不是纯数字的情况,那么转成数值类型结果是NaN。如果是空字符串那么转成数值类型结果是0 ②把布尔值的true转成数值结果是1,布尔的false转成数值结果是0 ③把null转成数值类型结果是0,undefined转成数值结果是NaN ④把数值0和NaN转成布尔类型,结果是false。其他是true ⑤把空字符串转成布尔类型结果是false,如果空字符串里面有空格,那么结果是true ⑥如果是把字符串里面只有空格的这种情况转成数值的类型结果是0 ⑦把null和undefined转成布尔类型结果都是false
二、取小数位和半段是否为非数字
1.toFixed() 可以把小数位,并且会把数据转成字符串类型。会进行四舍五入 console.log(price.toFixed(2))
2.isNaN() 判断非数字,如果是非数字返回true,如果是数字返回false。会进行隐式数据类型转换
3.console.log(0.1 + 0.2 == 0.3) // false 原因:这个问题是由计算机系统产生,因为底层都是二进制,而二进制在表示某些小数的时候表示的不完整,会导致精度丢失,因此造成这种现象
解决方案:可以使用toFixed console.log((0.1 + 0.2).toFixed(2) == 0.3) // true
三、取整型和浮点型
1.parseInt() 只取数据里面的整型部分,如果遇到非整型(遇到非数字)的部分则停止提取。会把字符串转成数值类型
2.parseFloat() 会提取数据里面的小数部分,如果遇到非数字部分会停止提取。会把字符串转成数值类型
四、逻辑运算符注意点
逻辑运算符返回的结果不一定是以true和false来呈现的,会根据不同的运算符来给你呈现结果
console.log(10>5 && 10<20) console.log(1 && 0) // 0 console.log(1+2 && 0+1) // 1 console.log(1+2 || 0+1) // 3
五、分支选择结构
1.单分支选择结构 + 作用 => 用于判断 + 语法 => if(){} + 说明 => if属于系统的关键字,这里表示如果 => ()小括号里面写的是判断条件,无论小括号写的是什么,最终都会转成布尔值来判断 => {}花括号里面放的是最终条件成立需要执行的代码
2.双分支选择结构 + 语法 => if(){}else{} + 说明 => if、else属于系统的关键字,这里表示如果、否则 => ()小括号里面写的是判断条件,无论小括号写的是什么,最终都会转成布尔值来判断 => {}花括号里面放的是最终条件成立需要执行的代码 => 无论条件成立还是不成立最终都会输出一个结果
3.多分支选择结构 + 语法 => if(){}else if{}...else{} + 说明 => if、else属于系统的关键字,这里表示如果、否则 => ()小括号里面写的是判断条件,无论小括号写的是什么,最终都会转成布尔值来判断 => {}花括号里面放的是最终条件成立需要执行的代码 => 可以写多个判断条件,每一个条件对应一个结果
4.switch多分支结构 + 作用 => 可以做匹配,使用一个值去匹配一个结果,不需要你写判断,结构上更为清晰 + 语法 switch(){ case '匹配值': 匹配成功输出代码 break case '匹配值': 匹配成功输出代码 break case '匹配值': 匹配成功输出代码 break default: 其他的情况 } + 说明 => switch、case、default、break都是系统关键字 => switch小括号里面写的是匹配条件,要求是一个变量,并且是全等于匹配(值和类型都要相等) => case后面跟的是要匹配的值,case可以写多个 => break是终止条件,防止穿透 => default是默认值,和else作用是一样的
六、三目运算符
+ 语法 => 条件 ? 成立条件输出结果 : 不成立条件输出结果 + 作用 => 可以对选择结构进行简化,但是一般用来简化双分支结构
判断一个数是奇数还是偶数? var num = prompt('请输入一个数字?') num%2==0 ? alert('偶数') : alert('奇数')
七、循环
1.while循环 + 语法 开始的变量 while(判断条件){ 需要执行的代码 步长 } + 说明 => while是系统关键字,这里直接叫做循环就行,不要翻译成其他的 => while小括号里面放的是循环的结束条件 => while循环每次执行,需要while循环体的外面给一个初始化的变量,作为循环的开始 => 循环的步长需要添加,这个步长其实就是自增,也可以理解为变量更新
2.死循环 + 循环的条件一直处于成立的状态下,代码会持续的执行下去,把这种现象称之为死循环 + 形成死循环的条件 => 条件一直为true => 不写变量更新 => ... + 注意点 => 千万不要写死循环,因为死循环会消耗电脑的性能,也会导致程序的崩溃
3.do while循环 + 是while循环的一种变种形式,从while循环上改造而来的。和while循环的区别在于do while循环会先斩后奏(无论条件满足与否都会先执行一次) + 语法 do{ 输出的代码 变量更新 }while(判断条件) + 说明 => do、while是系统关键字 => 无论条件满足与否都会先执行一次
场景:网络请求数据,如果请求的数据回来了,就使用这个数据循环,如果没有回来需要给用户一个提示 var data = 10 var i = 1 do{ if(data == null){ alert('网络请求失败') //可以终止循环的执行 break } console.log('后续的代码') i++ }while(i<=data)
4.for循环 + 语法 => for(变量初始化; 判断条件; 变量更新){ 输出代码 } + 说明 => for是系统关键字 => for循环结构更为明确,不容易让你忘记写变量更新 => for循环的执行步骤和while循环一样 + 循环终止条件 => continue 终止当前的循环,后续的循环会执行 => break 终止整个循环