zoukankan      html  css  js  c++  java
  • JavaScript-undefined与null区别

    JavaScript中的null在其他编程语言中也很常见,但是JavaScript在设计的过程中null自动转换为0,为了更好表示空,这个时候undefined出现了,null通过typeof结果是“object”,undefined通过typeof表示这个值是这个类型的唯一成员。null和undefined中都是表示值的空缺,不过两者当做布尔值时都是false,通过==的时候都是相等的,但是null和undefined分别字符串,数字,布尔值相比都是false。

    Null和Undefined区别

    JavaScript取值为null的情况有两种:

    //获取不到元素
    1.var notExist= document.getElementById('notExist');//null
    
    //原型链的终点,也是返回null的
    2.Object.getPrototypeOf(Object.prototype)//null 

    undefined的情况如下:

    ①变量声明,未赋值;

    var a;//undefined

    ②查询对象的属性或数组元素的值不存在时,返回undefined; 

    var arr=[1,2,3];//博客园-FlyElephant
    console.log(arr[5]);//undefined   

    ③函数没有任何返回值的时候返回undefined;

    function f(){};console.log(f());//undefined

    ④引用没有提供实参的函数形参的值会得到undefined:

    function f(x){console.log(x);}f();//undefined
    

    题外话

    以前有一个很经典的JavaScript问题:

    if (!("a" in window)) {
        var a = 1;
    }
    console.log(a);//博客园-FlyElephant
    

    最后输出的是undefined,其中a是可以访问的,所有的声明都是提前声明的,a最开始的定义值是undefined,"a" in window是真,因此赋值语句没法执行到,最后的执行结果是undefined;

  • 相关阅读:
    质量属性论文
    四月份-读书笔记 构建之法
    基于二元模型的拼音输入法
    融云单聊
    Gogs私有git仓库 + Drone构建CI/CD
    仿jq ajax封装支付宝小程序request.js
    Electron 和 Angular 构建桌面应用程序
    css多行溢出省略号
    package-lock和package.json
    控制窗体的小程序
  • 原文地址:https://www.cnblogs.com/xiaofeixiang/p/5020726.html
Copyright © 2011-2022 走看看