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
  • 相关阅读:
    bzoj1923 [Sdoi2010]外星千足虫(gauss)
    bzoj1013 [JSOI2008]球形空间产生器sphere(gauss)
    bzoj1013 [JSOI2008]球形空间产生器sphere(gauss)
    高斯消元(写(shui)题必备)
    随 (rand)(校内hu测10.6T1)(dp+矩阵+数论)
    随 (rand)(校内hu测10.6T1)(dp+矩阵+数论)
    题(problem)(详解10.5hu测T3:Catalan)
    题(problem)(详解10.5hu测T3:Catalan)
    高精度(模板)
    FJUT ACM 2144 并查集
  • 原文地址:https://www.cnblogs.com/liu-fei-fei/p/7716944.html
Copyright © 2011-2022 走看看