javascript 之 数据类型基础(重新认识运算符) 习题解惑 nan

感想:总以为自己懂了,其实我们只是懂了自己局限的东西,用的时候又总是出错,尝试去做习题和面试题能提高自己对这知识点的重新认知.

建议学习方式:吸收的特别快,可以立马做题练习,若是慢,就可以不用管,等计划学完后请记得回过头来看看,那些宝藏等着你去开启)

接下来,请重新去学习基础,重新认识它

概念:参数 = 运算元

运算元 —— 运算符应用的对象。比如说乘法运算 5 * 2,有两个运算元:左运算元 5 和右运算元 2。有时候人们也称其为“参数”而不是“运算元
根据运算元的个数分为:
一元运算符:案例: +1 //1
二元运算符:案例 1+1 //2
三元运算符:表达式?式子:式子 案例: true?1:0

常见的运算符

加法 +,
减法 -,
乘法 *,
除法 /,
取余 %,
求幂 **.   // a**b  解释: a乘以自身b次   案例 2**3  => 2*2*2 =8

二元运算符+连接字符串 (注意: 仅仅是+符号很特殊,其他的符号都会优先将 运算元 转为数字)

'1' + 2    // '12'
2 + '1'    // '12'
结论: 二元运算符 只要用 + 符号,只要至少一边为 字符串,那么就是字符串拼接

特殊情况

alert(2 + 2 + '1' ); // "41",不是 "221"

强调二元 + 是唯一一个以这种方式支持字符串的运算符。其他算术运算符只对数字起作用,并且总是将其运算元转换为数字

先给个糖果,什么值 为false 

答案: 0  null  undefined  false  ''   NaN  共六种     

 

做题:

+1 //  1
+-2  // -2      
// 注释: console.log(--2) 和 console.log(++2) 都会报错,也就是说,
但是 let num=2; console.log(--num) 和 console.log(++num)不会报错,很神奇,有点不懂

let apples = "2"; let oranges = "3";
// 在二元运算符加号起作用之前,所有的值都被转化为了数字 alert( +apples + +oranges ); // 5

 

运算符优先级

 

 逗号运算符

let a = (1 + 2, 3 + 4);

alert( a ); // 7(3 + 4 的结果)

如果没有圆括号:a = 1 + 2, 3 + 4 会先执行 +,将数值相加得到 a = 3, 7,然后赋值运算符 = 执行, ‘a = 3’,然后逗号之后的数值 7 不会再执行,它被忽略掉了。相当于 (a = 1 + 2), 3 + 4

 

坑点来了

"" + 1 + 0       //
"" - 1 + 0
true + false
6 / "3"
"2" * "3"
4 + 5 + "px"
"$" + 4 + 5
"4" - 2
"4px" - 2
7 / 0
"  -9  " + 5
"  -9  " - 5
null + 1
undefined + 1
" \t \n" - 2   

答案

"" + 1 + 0 = "10" // (1)
"" - 1 + 0 = -1 // (2)
true + false = 1
6 / "3" = 2
"2" * "3" = 6
4 + 5 + "px" = "9px"
"$" + 4 + 5 = "$45"
"4" - 2 = 2
"4px" - 2 = NaN
7 / 0 = Infinity
"  -9  " + 5 = "  -9  5" // (3)
"  -9  " - 5 = -14 // (4)
null + 1 = 1 // (5)
undefined + 1 = NaN // (6)
" \t \n" - 2 = -2 // (7)

解析

  1. 到 "1" + 0,再次应用同样的规则得到最终的结果。
  2. 减法 -(像大多数数学运算一样)只能用于数字,它会使空字符串 "" 转换为 0
  3. 带字符串的加法会将数字 5 加到字符串之后。
  4. 减法始终将字符串转换为数字,因此它会使 " -9 " 转换为数字 -9(忽略了字符串首尾的空格)。
  5. null 经过数字转换之后会变为 0
  6. undefined 经过数字转换之后会变为 NaN
  7. 字符串转换为数字时,会忽略字符串的首尾处的空格字符。在这里,整个字符串由空格字符组成,包括 \t\n 以及它们之间的“常规”空格。因此,类似于空字符串,所以会变为 0

 

 

推荐的网站,很棒的网站,里面有些习题能够帮助我们真正的去理解它

https://zh.javascript.info/operators

posted @ 2020-12-29 14:35  zmztyas  阅读(97)  评论(0编辑  收藏  举报