4. 运算符和表达式
4.3 赋值运算符和表达式
| 1.赋值运算符 = |
| 作用:赋值运算符就是将右边的内容赋值给左边的变量或属性。 |
| var result = 1 + 2; |
| |
| 2.复合赋值运算符 +=,-=,*=,/= |
| var x = 0; |
| var y = 1; |
| x += y; |
| console.log(x); |
4.4 条件运算符和表达式
| 条件运算符 条件表达式的结果一定是布尔值 |
| var a = 10; |
| var b = 15; |
| 1. > 大于 < 小于 |
| console.log(a > b); |
| console.log(a < b); |
| |
| 2. >= 大于等于 <= 小于等于 |
| console.log(a >= b); |
| console.log(a <= b); |
| |
| 3. == 等于 != 不等于 |
| == 双等于会进行类型的隐式转换,比较两者是否相等 |
| a = 10; |
| b = '10'; |
| console.log(a == b); |
| console.log(a != b); |
| |
| 4. === 全等于 !== 不全等于 |
| 全等于会先判断两者的数据类型,不相同则直接返回false,否则继续比较是否一致 |
| console.log(a === b); |
| console.log(a !== b); |
4.5 逻辑运算符和表达式
①.逻辑运算符一般情况(逻辑运算符两边都是条件表达式)
| 逻辑运算符 |
| 1. && 表示并且 全真为真,一假则假 |
| 2. || 表示或者 全假则假,一真则真 |
| 3. ! 取反(true变false false变true) |
| |
| var height = 180; |
| var weight = 70; |
| |
| console.log(height > 175 && weight < 80); |
| weight = 81; |
| |
| console.log(height > 175 && weight < 80); |
| |
| |
| console.log(height > 175 || weight < 80); |
| |
| height = 174; |
| console.log(height > 175 || weight < 80); |
②.逻辑运算符特殊情况(逻辑运算符两边有一边不是条件表达式)
| 逻辑运算符的特殊情况:逻辑运算符两边有一边不是条件表达式 |
| |
| 1. && 前面为真,结果为后面的值 |
| 前面为假,直接返回前面的值,后面的表达式不执行 |
| 2. || 前面为真,直接返回前面的值,后面的表达式不执行 |
| 前面为假,结果为后面的值 |
| 3. 注意点:值本身作为返回结果,不是值隐式转化的布尔值 |
| |
| var a = 0; |
| var b = 10; |
| |
| console.log(a && ++b); |
| console.log(a || ++b); |
| |
| var c = ''; |
| var d = 'df'; |
| |
| console.log(c && d); |
| console.log(c || d); |
③.逻辑非
| |
| |
| console.log(!true); |
| console.log(!false); |
| console.log(!0); |
| console.log(!NaN); |
| console.log(!5); |
| console.log(!''); |
| console.log(!'df'); |
| console.log(!' '); |
4.6 三元运算符和表达式
| 1. 一元运算符 ++ -- ! |
| 2. 二元运算符 + - * / % && || =(赋值运算符的优先级很低) |
| 3. 三元运算符 flag ? x : y |
| 说明:flag 为真,执行x;flag 为假,执行y |
| |
| var a = 10; |
| var b = 20; |
| console.log(a > b ? a++ : b++); |
| |
| b = 20; |
| console.log('' ? a++ : b++); |
| |
| b = 20; |
| console.log(325 ? a++ : b++); |
4.7 一元加法(值转换成数字)
| 当一个值前面出现 '+' ,代表将这个值转化成数字,转化失败返回NaN |
| console.log(+'45'); |
4.8 运算符优先级问题
| |
| |
| var a = 1; |
| var b = 2; |
| console.log(a + b * 3); |
| |
| |
| var c = 3; |
| var d = 4; |
| console.log(c + d++); |
| |
| |
| var e = 5; |
| var f = 6; |
| var g = 7; |
| console.log(e + f - g); |
5. 数据类型转化
5.1 数据类型的强制转换
①.其他类型转数字 Number()
| 1 字符串转数字 |
| var num = 'abc123'; |
| num = '123456'; |
| num = ' 123456'; |
| num = '123456 '; |
| num = '123 456'; |
| num = ''; |
| num = ' '; |
| Number(num) |
| |
| 2 布尔值转数字 |
| num = true; |
| num = false; |
| Number(num) |
| |
| 3 undefined转数字 |
| num = undefined; |
| Number(num) |
| |
| 4 null转数字 |
| num = null; |
| Number(num) |
总结:
| 字符串转数字:当一个字符串整体是一个数字时,可以直接转化出来,可以忽略字符串左右的空白,中间有空白不可以 |
| 当一个字符串为空串或者空白串时,转出来都是数字0 |
| 剩余情况下字符串都转化成 NaN |
| 布尔值转数字:true时转为1,false时转为0 |
| undefined转数字:NaN |
| null转数字:0 |
②.其他类型转字符串String()
③.其他类型转布尔值Boolean()
| 1 数字转布尔值 |
| var flag = 1; |
| flag = 3; |
| flag = -0.5; |
| flag = 0; |
| flag = NaN; |
| Boolean(flag) |
| |
| 2 字符串转布尔值 |
| flag = "haha123"; |
| flag = ' '; |
| flag = '0'; |
| flag = ''; |
| Boolean(flag) |
| |
| 3 undefined转布尔值 |
| flag = undefined; |
| Boolean(flag) |
| |
| 4 null转布尔值 |
| flag = null; |
| Boolean(flag) |
总结
| 数字转布尔值:除了0和NaN都是true |
| 字符串转布尔值:除了空串其他都是true |
| undefined转布尔值:false |
| null转布尔值:false |
5.2 数据类型的隐式转换
①.隐式转换发生在:数据的运算,比较,判等中
②.数据的判等 ==
| 1.先看两边是不是同一种数据类型,如果是,看值是否一致 |
| 2.如果不是,则两边同时转换成数字 |
| console.log(10 == 11); |
| console.log('10' == 10); |
| console.log(1 == true); |
| 3.判等的特殊情况 |
| |
| |
| console.log(null == 0); |
| |
| console.log(null == ''); |
| |
| console.log(null == false); |
| |
| console.log(null == undefined); |
| |
| console.log(null == null); |
③.数据之间的运算和比较
| 1.数据的运算和比较正常都是转成数字 |
| 2.特殊情况: |
| ①.+号左右存在字符串,就是拼接字符串 |
| ②.如果比较运算符左右都是字符串,比较的是ascll码的大小 |
④.NaN的特殊性
| 1.NaN与任何值判等都是不等 |
| 2.NaN与任何值比较大小,结果都是false |
| 3.NaN与任何值运算,结果都是NaN,除了与字符串拼接 |
| console.log(NaN == NaN); |
| console.log(NaN > 5); |
| console.log(NaN < 5); |
| console.log(NaN + NaN); |
| console.log(NaN + 'hello'); |
5.3 字符串当中提取数字
①.语法
| parseInt() 只取整数部分 |
| parseFloat() 不光要整数部分还要小数部分 |
②.要求
| 1.数字必须在字符串前面 |
| 2.可以处理前面的空格,无法处理中间的空格 |
| var str = ''; |
| str = 'aa123'; |
| str = ' 123.9'; |
| str = ' 123. 9 ' |
| console.log(parseInt(str)); |
| console.log(parseFloat(str)); |
③.应用范围
5.4 js常见的错误
| console.log(b) |
| |
| |
| console.log(‘’) |
| |
| |
| |
| a() |
| |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统