Boolean基本类型和引用类型

Boolean基本类型和引用类型

  先给大家看下代码:

  var x = true,

    y = false,

    xObject = new Boolean(x),  //true

    yObject = new Boolean(y),  //false

    resXObject = new Boolean(xObject),  //true

    resYObject = new Boolean(yObject);  //true

  alert它们分别输出什么呢?为什么输出这个?

一、Boolean基本类型

  1.它是使用得非常频繁的一种类型,只有两个值true和false。

  2.转化Boolean值:

    var booleanValue = Boolean(value);

    如果省略参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则value转化为 false。否则转化为 true(即使参数是字符串 "false")。

二、Boolean引用类型

  1.它可以像下面这样调用Boolean构造函数并传入true或false值:

    var booleanObject = new Boolean(true);

    如果省略参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使参数是字符串 "false")。

  2.valueOf方法:

    返回基本类型值true或false。

  3.toString方法:

    返回字符串‘true’或‘false’。

三、二者之间的区别

  1.typeof操作符对Boolean基本类型返回‘boolean’,而对引用类型返回‘object’。

    alert(typeof x);  //boolean

    alert(typeof xObject);  //object

  2.instanceof操作符测试Boolean对象,对Boolean基本类型返回false,而对引用类型返回true。

    alert(x instanceof Boolean);  //false

    alert(xObject instanceof Boolean);  //true

四、总结

  1.根据new Boolean()的参数规则

    xObject = new Boolean(x);由于参数x值为true,故生成xObject是一个值为true的Boolean对象;

    yObject = new Boolean(y);由于参数y值为false,故生成yObject是一个值为false的Boolean对象;

  2.根据new Boolean()的参数规则以及Boolean基本类型的转化规则

    resXObject = new Boolean(xObject);由于xObject为对象,根据Boolean基本类型的转化规则被转化为true,再根据new Boolean()的参数规则,故生成resXObject是一个值为true的Boolean对象;

    resYObject = new Boolean(yObject);由于yObject为对象,根据Boolean基本类型的转化规则被转化为true,再根据new Boolean()的参数规则,故生成resYObject是一个值为true的Boolean对象;

  不过在此建议大家尽量不要使用Boolean对象,以免不小心造成错误。

五、问题

  var a = new Boolean(false);
  if (a) {
      alert(a);
  }

  会否执行alert?如果会,alert出什么?

  var a = new Boolean(false);
  if (a) {
      alert(!a);
  }

  这样又如何?

posted @ 2012-08-07 23:55  Zaei  阅读(1941)  评论(0)    收藏  举报