zoukankan      html  css  js  c++  java
  • ==与===的区别

    ”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。

    下面的规则用于判定===运算符比较的两个值是否相等的判断条件

    •如果两个值的类型不同,它们就不相同。
    •如果两个值是数字,而且值相同,那么除非其中一个或两个都是NaN(这种情况它们不是等同的),否则它们是等同的。值NaN永远不会与其他任何值等同,包括它自身(奇怪的家伙),要检测一个值是否是NaN,可以使用全局函数isNaN()。  NaN不等于NaN
    •如果两个值都是字符串,而且在串中同一位置上的字符完全相同,那么它们就完全等同。如果字符串的长度或内容不同,它们就不是等同的。
    •如果两个值都是布尔型true,或者两个值都是布尔型false,那么它们等同。
    •如果两个值引用的是同一个对象、数组或函数,那么它们完全等同。如果它们引用的是不同的对象(数组或函数),它们就不完全等同,即使这两个对象具有完全相同的属性,或两个数组具有完全相同的元素。 new Object()不等于new Object()
    •如果两个值都是null或都是undefined,它们完全相同。 null===null;  undefined===undefined

    下面的规则用于判定==运算符比较的两个值是否相等的判断条件

    如果两个值具有相同的类型,那么就检测它们的等同性。如果这两个值完全相同,它们就相等。如果它们不完全相同,则它们不相等。
    •如果两个值的类型不同,它们仍然可能相等。用下面的规则和类型转换来检测它们的相等性 ◦

    如果一个值是null,另一个值是undefined,它们相等。
    ◦如果一个值是数字,另一个值是字符串,把字符串转换为数字,再用转换后的值进行比较。
    ◦如果一个值为true,将它转化为1,再进行比较。如果一个值为false,把它转化为0,再进行比较。
    ◦如果一个值是对象,另一个值是数字或字符串,将对象转换成原始类型的值,再埋比较。可以使用对象的toString()方法或valueOf()方法把对象转化成原始类型的值。JavaScript核心语言的内部类通常先尝试valueOf()方法转换,再尝试toString()方法转换,但是对于Date类,则先执行toString()方法再执行valueOf()方法转换。不属于JavaScript核心语言的对象则可以采用JavaScript实现定义的方式把自身转换成原始数值。

    null与undefined的区别?

    null是一个表示“无”的对象,转为数值时为0;undefined是一个表示“无”的原始值,转为数值时为NaN;

    当声明的变量未初始化时,变量的默认值为undefined;null用来表示尚未存在的对象

    undefined表示“缺少值”,就是此处应该有一个值,但是还没有定义。典型用法是:

    (1)变量声明了,但是还没有赋值,就等于undefined;

    (2)调用函数时,应该提供的参数没有提供,该参数等于undefined;

    (3)对象没有复制的属性,该属性的值为undefined;

    (4)函数没有返回值时,默认返回undefined;

    null表示“没有对象”,即该处不应该有值,典型用法是:

    (1)作为函数的参数,表示该函数的参数不是对象;

    (2)作为对象原型链的终点。

  • 相关阅读:
    POJ-1189 钉子和小球(动态规划)
    POJ-1191-棋盘分割(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
  • 原文地址:https://www.cnblogs.com/xiaoan0705/p/8656857.html
Copyright © 2011-2022 走看看