zoukankan      html  css  js  c++  java
  • Boolean对象与Boolean原始值的区别

    我们先来看下面这道题:

    var x = new Boolean(false);
    if (x) {
      alert('hi');
    }
    var y = Boolean(0);
    if (y) {
      alert('hello'); 
    }

    最后会弹出什么呢?w3c上说:创建boolean对象有两种语法:

    new Boolean(value);    //构造函数
    Boolean(value);        //转换函数

    当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。

    如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成一个原始的布尔值,并且返回这个值。

    根据这里来看,上面是使用了new来创建构造函数,那么他返回的是一个对象。当一个值为false的Boolean对象放到条件语句当中的时候,Boolean对象的值会被当作true来计算,但是它本身的值并没有改变,依然是false。

    再看下面这个测试:

    var x = new Boolean(false);
    alert(typeof x);//object
    alert(x instanceof Boolean); //true
    var y = Boolean(0);
    alert(typeof y);//boolean
    alert(y instanceof Boolean); //false

    首先, typeof 操作符对基本类型返回 “boolean” ,而对引用类型返回 “object” 。其次,由于 Boolean 对象是 Boolean 类型的实例,所以使用 instanceof 操作符测试 Boolean 对象会返回 true ,而测试基本类型的布尔值则返回 false 。

    最后总结:只是见过这个题,所以搜索了一下这个知识点,平时根本就没用过这东西。

    好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
  • 相关阅读:
    php原生代码实现explode函数功能
    PHP的命名空间
    高性能索引策略二
    .Net Core缓存组件(Redis)源码解析
    .Net Core缓存组件(MemoryCache)源码解析
    Docker系列之Docker容器(读书笔记)
    Docker系列之Docker镜像(读书笔记)
    .Net Core中的日志组件(Logging)
    .Net Core Cors中间件解析
    .Net Core项目添加日志功能
  • 原文地址:https://www.cnblogs.com/wangxi01/p/6428232.html
Copyright © 2011-2022 走看看