JavaScript_Day2

54 阅读5分钟

一、==与===的共同点与区别

  1. 共同点

    都是用于比较两个值。

  2. 区别
    • “==”是宽松的相等比较运算符。当使用“==”进行比较时,它会尝试进行类型转换以使得比较能够进行。例如,如果一边是数字类型,另一边是字符串类型但可以转换为数字,它会先进行类型转换,然后再比较值。这可能导致一些意外的结果。例如,“0” == false 会返回 true,因为在这种比较中,false 被转换为 0 进行比较。
    • “===”则是严格相等比较运算符。它不仅要求值相等,还要求数据类型也完全相同。如果数据类型不同,直接返回 false。例如,5 === "5" 返回 false,因为一个是数字类型,一个是字符串类型。
    • 这种严格的比较可以避免由于类型转换而导致的潜在错误和不确定性,使得代码的行为更加可预测和可靠。在大多数情况下,为了保证代码的准确性和可维护性,推荐使用“===”进行比较,除非明确知道需要进行类型转换的宽松比较。

二、前置自增(自减)与后置自增(自减)

  1. 前置自增(自减)的返回值是自增后的值,即先进行自增操作,然后返回自增后的结果。例如,对于++i,它会先将i的值增加 1,然后返回增加后的i的值。
  2. 后置自增(自减)的返回值是自增前的值,即先返回当前i的值,然后再进行自增操作。例如,对于i++,它会先返回i的当前值,然后再将i的值增加 1。

三、NaN

NaN 是 JavaScript 中的一个特殊值,表示“非数字”(Not a Number)。当进行一些不合法的数学运算,例如对非数字字符串进行算术运算,或者数学函数的参数不合法时,可能会返回 NaN 。

    NaN 有两个特点:
  1. 任何涉及 NaN 的操作(例如加法、减法、乘法等)结果都还是 NaN 。
  2. NaN 与任何值(包括它自己)都不相等,包括 NaN 。

四、while的使用场景及其原因

“while”循环适合在循环次数不确定的时候使用

    原因:
  1. 条件驱动:“while”循环是基于一个条件来决定是否继续执行循环体。只要条件为真,循环就会继续。在循环开始前,我们可能并不知道具体需要循环多少次才能满足某个条件或者达到某个目标,而只知道一个大致的判断条件。
  2. 灵活性:在程序执行过程中,可以根据各种复杂的逻辑和外部因素动态地改变条件的判断结果,从而灵活地控制循环的执行次数。
  3. 不确定性场景:例如等待某个外部事件的发生、处理未知长度的数据等情况,事先无法确定确切的循环次数,使用“while”循环可以根据条件实时判断是否继续循环。

五、break与continue

  1. 概念:
    • break 语句用于终止当前所在的循环结构,使程序跳出循环,继续执行循环后面的语句。
    • continue 语句用于跳过当前循环中的剩余语句,直接开始下一次循环。
  2. 相同点:都是在循环结构(如 for 循环、while 循环等)中使用的控制语句。
  3. 区别:
    • break 会完全终止当前所在的循环,不再进行后续的循环迭代。
      (1)清晰的逻辑控制:在编程中,有时我们需要在满足特定条件时立即停止整个循环的执行。break 提供了一种明确和直接的方式来实现这种逻辑,使代码的意图清晰易懂。
      (2)提高程序效率:当已经达到了我们期望的结束条件,继续执行剩余的循环迭代可能是不必要的,甚至是浪费计算资源的。通过 break 及时终止循环,可以提高程序的运行效率。
      (3)处理异常或特殊情况:在某些情况下,可能出现了错误、异常或者不符合预期的情况,此时需要立即停止循环,避免进一步的错误或不必要的操作。
    • continue 只是跳过本次循环的剩余部分,立即开始下一轮迭代。
      (1)提供部分跳过的灵活性:在某些情况下,我们希望在循环中根据特定条件跳过当前迭代的某些后续操作,但仍然要继续进行下一轮迭代。这使得我们可以在不终止整个循环的情况下,有选择地忽略某些情况。
      (2)保持循环的完整性:有时候我们不需要完全终止循环,只是希望在某些特定条件下不执行当前迭代中的一部分代码,然后继续进行下一次循环。这样可以在保持循环结构完整的同时,实现有条件的跳过操作。
      (3)优化和效率:如果在某些情况下只需要跳过当前迭代的一部分而不是整个循环,使用 continue 可以避免不必要的循环终止和重新开始,提高程序的效率。