美文网首页
if与==中的强制类型转换

if与==中的强制类型转换

作者: zooeydotmango | 来源:发表于2019-08-20 16:04 被阅读0次

if==都会发生强制类型转换

if

if(xx)的含义是判断xx是否为"真值",很好判断,因为"假值"只有6个:

false
undefined
null
0
""     //空字符串
NaN

除此以外的所有值都可以判断为true

非严格相等

可以以一个方式快速判断非严格相等的值,即左右都转化为数字,对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果

  1. 字符串和数字之间的相等比较
var a = 42
var b ='42'
a == b //true
  1. 其它类型与布尔值之间的相等比较
var a = '42'
var b = true
a == b  // false 因为42不等于1
  1. null和undefined之间宽松相等
    ==nullundefined相等(它们也与其自身相等),除此之外的其它值都不存在这种情况
var a = null  //0
var b         //NaN

a == b      // true 
a == null   // true
b == null   // true

a == false  // false
b == false  // false
a == ""     // false
b == ""     // false
a == 0      // false
b == 0      // false
  1. 对象和非对象之间的相等比较
var a = 42
var b = [42]
a == b  // true
  1. 极端情况:
    [] == ![]
    我们先来分析一下:首先![]会被转换为false,变为[] == false,然后[]通过ToPrimitive操作转换为'',即 '' == false,然后false通过ToNumber转换为0,变为'' == 0,最后''通过ToNumber转换为0,变为 0 == 0,结果为true

安全运用隐式强制类型转换

我们要对==两边的值进行认真推敲,一下两个原则可以让我们有效的避免出错。

如果两边的值中有truefalse,千万不要使用==
如果两边的值中有[]''或者0,尽量不要使用==

隐式强制转换在部分情况下确实很危险,为了安全起见就要使用===

相关文章

  • 第三章 JavaScript中的数据间类型的转换

    数据的类型转换分为强制类型转换和非强制类型转换,强制类型转换也可以称为显示转换,非强制类型转换也可以称为隐式转换。...

  • JavaScript类型转换

    在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用js弱变量类型转换)。 强制类型转换 即通过使...

  • if与==中的强制类型转换

    if和==都会发生强制类型转换 if if(xx)的含义是判断xx是否为"真值",很好判断,因为"假值"只有6个:...

  • php的数据类型的转换和运算符

    主要分为两种,自动转换和强制类型转换,也就是显式转换和隐式转换,自动转换用的多 php中强制类型转换 在php中的...

  • 【Java后续】Java语言如何实现数据强制类型转换

    在上篇文章中我们就知道了数据类型的转换分为两种 : 1.自动类型转换2.强制类型转换 现在我们来看看强制类型转换 ...

  • C++指针和引用

    一、指针与强制类型转换 指针类型的强制转换,是指将指针所指的内容的类型由原先的类型转换为后面的类型 p和p1的值都...

  • 前端知识点(10)

    强制类型转换 强制类型转换 - 指将一个数据类型强制转换为其他的数据类型 - 类型转换主要指,将其他的数据类型,转...

  • 十一、类型转换

    1、强制类型转换 C方式的强制类型转换 C方式强制类型转换存在的问题 过于粗暴:任意类型之间都可以进行转换,编译器...

  • 引用类型转换

    向上类型转换(自动类型转换),是小类型到大类型的转换向下类型转换(强制类型装换),是大类型到小类型的转换在强制类型...

  • js 实用小套路,你需要的开发小技巧

    强制类型转换 强制转换为Boolean 用 !! 强制转换为Number 用 + 强制转换为String 用 ""...

网友评论

      本文标题:if与==中的强制类型转换

      本文链接:https://www.haomeiwen.com/subject/oqepsctx.html