javascript 判断的 true 与 false

当前位置: 首页 » 记录 » javascript » javascript 判断的 true 与 false

分类: javascript 533阅读阅读模式

0 与 '0' 的是与非

0 是 Number 而 ‘0’ 是 String 。

尝试全局通过 !0来判断不大可靠的一个判断,0 与 ‘0’  是一个不同的概念。 !0为 true 而 !'0'为 false。

0 == '0' 而 0 !== '0' 等于和全等有着一定的差异。

那么,如果 !0 是 true ,会等于 true 或者全等于 true ? 对的,都是对等的,在 !0 之后的值都变为了布尔值。

但是 !0 为 true ,0 就等于 false 了,这是对的想法,但是否全等于? 很不幸 0 !== false 。

可以知道,0 为假,那么 1 为真,而任何 !'str' 都是为假。

假如这个字符串为空呢?为什么非空为真?

例子:

  1. typeof 0;// number
  2. typeof '0';// string
  3. typeof 1;// number
  4. !0;// true
  5. !1;// false
  6. !0;// false
  7. 0 == false;// true
  8. 0 === false;// false
  9. 1 == true;// true
  10. 1 === true;// false
  11. 0 == '0';// true
  12. 0 === '0';// false
  13. !'' == true;// true

 

null 与 instanceof 的是与非

值得注意的是 typeof null 为 object ,但 null instanceof Object 却是 false 。 因为虽然 null 的类型是 object ,但是 null 不具有任何对象的特性。

尝试 typeof 'str' 的结果为 string ,却是误以为 'str' instanceof String 为 true ,却是不能所愿,在 msdn 上面有说明: instanceof 方法要求开发者明确地确认对象为某特定类型。

很明显,'str' 是一个没有指明对象的类型,如果想要为 true 。需要对 str 进行 new String() 处理。

但是会惊讶的发现进行 new String() 处理后,instanceof  String 为真,返回来通过 typeof 该 'str' 却变成了 object 类型了。

对于真假,!null 时为 true。但 null 却是不为 false 。

  1. typeof null;// object
  2. null instanceof Object;// false
  3. typeof 'str';// string
  4. 'str' instanceof String;// false
  5. new String('str'instanceof String;// true
  6. typeof new String('str');// object
  7. !null === true;// true
  8. null == false;// false

 

undefined 与 空 的差异

undefined 是一个类型,但是空呢?空有几种,'' 是空,只定义不赋值是空, {} 是空,[] 是空。

 

  1. typeof a;// undefined
  2. typeof '';// string
  3. typeof undefined;// undefined
  4. typeof {};// object
  5. typeof [];// object

在进行非处理的时候,值得注意注意的是,!{} 和 ![] 是为 false 的;

那么在处理 true、false 的时候怎么处理?

定义未赋值、''、undefined这几种情况直接用非处理。

而空对象的处理,较好的处理方式的直接格式化为字符串。

对于空数组直接用长度处理,需要注意的是,用 ![] 处理是错误的,返回的是 false ;

 

  1. !a;// true
  2. !'';// true
  3. !undefined;// true
  4. [].length === 0;// true
  5. JSON.parse({}) === '{}';// true

 

 

 

 

 

 

 

 

 

 

相关文章

评论一下

【注意1】:首次评论使用表情将会进入审核状态。
【注意2】:无意义回复、乱打文字内容将会进入审核状态。
【注意3】:涉及辱骂、色情、政治、毒品、赌博内容将会进入审核状态。
【注意】:首次评论使用表情将会进入审核状态。
暂无评论