zoukankan      html  css  js  c++  java
  • 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
    " 	 
    " - 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)
    " 	 
    " - 2 = -2 // (7)

    解析

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

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

    https://zh.javascript.info/operators

  • 相关阅读:
    Scanner类
    16 String类
    15_面向对象_01
    14_面向对象_01_2 完整格式
    14_面向对象_01_1 成员变量 成员方法
    13_面向对象辅助看懂实例
    面向对象的基本概念
    Servlet_03 进阶随笔 两种域的运用调用方式
    Servlet_03 资源跳转 关键字
    Servlet_02 资源跳转
  • 原文地址:https://www.cnblogs.com/zmztya/p/14206449.html
Copyright © 2011-2022 走看看