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

    通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值。Javascript会自动将声明是没有进行初始化的变量设为undifined。

    如果一个变量根本不存在会发生什么事:

    >>> foo
    ReferenceError: foo is not defined

    我们得到了一个错误信息。我们在该变量上用typeof操作符看看它是什么类型:

    >>> typeof foo
    "undefined"

    我们得到的结果为字符串“undefined”。

    如果我们声明一个变量时没有对其进行赋值,调用该变量时并不会出错,但typeof操作符依然会返回字符串“undefined”。

    >>> var somevar;
    >>> somevar;
    undefined
    >>> typeof somevar;
    "undefined"

    而null值就完全是另外一回事啦。 他不能通过javascript来自动赋值,也就是说必须要我们自己手动来给某个变量赋值为null:

    >>> var somevar = null;
    >>> somevar;
    null

    而且,typeof操作符返回的是一个对象!

    >>> typeof somevar;
    "object"

    虽然说,undefine与null之间的差别不是很大,但是他们在一些算数运算中表现得非常不一样:

    >>> var i = 1 + undefined;  i;
    NaN
    >>> var i = 1 + null;  i;
    1

    这是因为undefined和null在被转换为其他基本类型时,方法存在一定的区别,下面我们给出一些可能的转换类型。

    转换为数字(把undefined看做字符串,null看做0):

    >>> 1 * undefined;
    NaN
    >>> 1 * null;
    0

    转换为布尔值:

    >>> !!undefined;
    false
    >>> !!null;
    false
        转换为字符串(都相应的转换为字符串):
    >>> ''+undefined;
    "undefined"
    >>> ''+null;
    "null"

    以上就是undefined与null的区别,以及在运算是要注意的地方。

  • 相关阅读:
    Angular7 表单
    使用Angular2的Http发送AJAX请求
    Nginx配置SSL证书实现https访问「浏览器未认证」
    详解 Nginx如何配置Web服务器
    前后端分离不可缺少的神器 NGINX
    程序员的快速开发框架:Github上 10 大优秀的开源后台控制面板
    腾讯出品的一个超棒的 Android UI 库
    Vue 旅游网首页开发1-工具安装及码云使用
    Angular routing生成路由和路由的跳转
    Angular 父子组件传值
  • 原文地址:https://www.cnblogs.com/MockingBirdHome/p/3398440.html
Copyright © 2011-2022 走看看