zoukankan      html  css  js  c++  java
  • undefined详解

    【对于《JS高级程序设计》的理解】

    “即使未初始化的变量会自动被赋值undefined值,但显式地初始化变量依然是明智的选择。如果能够做到这一点,那么当typeof操作符返回‘undefined’值时,我们就知道被检测的变量还没有被声明,而不是尚未初始化。”

    之前一直对这段话不理解,不知道说的到底是什么意思;今天重新回到这里,思考这段话,仔细想了一下;

    显式地初始化变量依然是明智的选择’这段话是歧义的根源,之前被我理解为,显示地初始化为undefined,这样做导致后面说的就不成立,无论是声明不声明结果还是一样的,因为默认undefined;

    而重新理解,应该是:初始化为一个非undefined的值,这样就成立了;可以用空的占位符,如:

    1. String类型:var str = '';
    2. Number类型:var num = 0;
    3. Boolean类型:var boo = true/false;
    4. Object类型:var obj = {};
    5. 数组:var arr = [];

    意思就是,使用变量的时候,要对变量进行初始化一个非undefined的值,这样后面我们在用typeof进行检测,只要返回undefined就认为是未声明的变量是成立的

    【严格相等和undefined】

    var name;
    
    if(name === undefined){
     //执行语句
    }else{
     //不执行的语句
    }

    注意:这里必须使用严格相等操作符(===)而不是标准相等操作符(==),因为undefined==null,也就是name == undefined会检测name是不是null,但是严格相等不会检查。

    【Void操作符和undefined】

    console.log(void(0));//undefined
    console.log(void 0);//undefined

    所以:

    if(x === void 0) {
        // 执行这些语句
    }
    // 没有声明y
    if(y === void 0) {
        // 抛出一个RenferenceError错误(与`typeof`相比)
    }

    理解:可以直接把void 0当成undefined看待

    【undefined和null的不同点】

    1. null是一个字面量(不是属性),undefined是全局对象的一个属性
    2. typeof null; //object
    3. typeof undefined; //undefined
    4. null === undefined; // false
    5. null == undefined; // true
    6. isNaN(1 + null); //false
    7. isNaN(1 + undefined); //true
  • 相关阅读:
    JavaEE XML SAX解析
    JavaEE XML DOM解析之DOM4J
    JavaEE XML DOM解析
    JavaEE XML StAX创建
    移动端弹窗后禁止滚动
    vue cli3 项目优化
    【性能优化】quicklink:实现原理与给前端的启发
    关于js异步的一些知识点
    node
    class类
  • 原文地址:https://www.cnblogs.com/liu-fei-fei/p/7716944.html
Copyright © 2011-2022 走看看