zoukankan      html  css  js  c++  java
  • JS篇 undefined的由来

    在<<Javascript 权威指南>>中,undefined常常被解释为:对应的值的缺失,对应以下四种情况:

    1. 无赋值      变量被声明了,但没有赋值时,就等于undefined。

    2. 属性不存在    引用对象中不存在属性,该属性的值为undefined。

    3. 形参未赋值    调用函数时,应该提供的参数没有提供,该参数等于undefined。

    4. 函数无返回值   函数没有返回值时,默认返回undefined。

    实际上,undefined可以被当做除primitive原始类型和object类型之外的第三种类型:

    window下的undefinded属性为undefined类型;这个类型只有一个值:undefined;

    null被当做object类型,是因为typeof null === "object";

    null instatnceof Object === false是因为null处于原型链的顶端,而不是Object.prototype原型节点的子节点;

    typeof     通过primitive,object,undefined类型判断
    instanceof  通过原型链判断

    在<<Speaking Javascript>>中,描述了设计undefined原因:

    1. 避免类型转换上的错误:当因为编程疏忽时(声明了变量,却忘记给变量赋值,会引起异常)

    Number(null)                // 0
    Number(undefined)         // NaN
    
    Boolean(null)               // false
    Boolean(undefined)         // NaN

    参考:

    编程的细节之美——undefined与null的区别    http://www.tuicool.com/articles/B7FFzez

  • 相关阅读:
    类模板机制
    C和C++中const的区别
    bitset
    静态库or动态库?
    多态原理探究
    程序从编译到运行过程
    对象的内存模型
    重载、重写(覆盖)和隐藏
    对继承和派生的理解
    对C++对象的理解
  • 原文地址:https://www.cnblogs.com/diydyq/p/4182184.html
Copyright © 2011-2022 走看看