美文网首页
关于JS中if(xx)和 a==b的判断

关于JS中if(xx)和 a==b的判断

作者: XuZiYa | 来源:发表于2018-09-09 16:31 被阅读0次

1. if结构

if结构先判断一个表达式的布尔值,然后根据布尔值的真伪,执行不同的语句。

基本形式

if (布尔值) {
    语句;
}

注意点:对于if结构,其括号里面的表达式,会被强制转换为布尔类型值。

下面给出一个例子:

if ('a') {
  console.log ('hello')
}
//hello

这里括号里是一个字符串'a',转换成布尔值是true,所以执行语句console.log ('hello')

还有一个例子:

if (0) {
  console.log ('hello')
}

这里括号里是一个数值0,转换成布尔值是false,所以不执行语句console.log ('hello')

如何知道一个数据的布尔值是true还是false,我们只需要记住一些特殊的值

转换成布尔值的结果
null false
undefined false
数值 +0 false
数值 -0 false
空字符串 '' false (要跟 ' ' 区分开来,这里中间有个空格,空格字符串转换成布尔值结果是true,跟空字符串不同)
NaN false

除了以上这些转换成布尔值是false,其它的转换成布尔值都是true

注意,if后面的表达式之中,不要混淆赋值表达式(=)、严格相等运算符(===)和相等运算符(==)。尤其是赋值表达式不具有比较作用。

例子:

var x = 1;
var y = 2;
if (x = y) {
  console.log(x);
}
// "2"

上面代码的原意是,当x等于y的时候,才执行相关语句。但是,不小心将严格相等运算符写成赋值表达式,结果变成了将y赋值给变量x,再判断变量x的值(等于2)的布尔值(结果为true)。

2. 相等运算符 ==

相等运算符用来比较相同类型的数据时,与严格相等运算符完全一样。比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。

转换规则

x y 结果
null undefined true
Number String x == toNumber(y)
Boolean (any) toNumber(x) == y
object String or Number toNumber(x) == y
otherwise otherwise false

ToNumber

转换后结果
undefined NaN
Null 0
Boolean true转换为数值1;false转换为数值0
String "abc"非数字类的转换为NaN;"123"数字类的转换为相应的数值123

Toprimitive

对于Object来说,当其遇到类型转换时,会先尝试调用valueOf进行转换,如果没有的话,再用toString进行转换;转换成原始类型后,在根据上面的规则转换。

相等运算符隐藏的类型转换,时常会带来一些违反直觉的结果。所以建议不要使用相等运算符(==),最好只使用严格相等运算符(===)。

3.参考资料

JavaScript 教程

相关文章

  • 2019-04-07

    JS中关于if(xx)与a==b的判断 if(xx)的判断 1.if(number) 当if中是number为+0...

  • 关于JS中if(xx)和 a==b的判断

    1. if结构 if结构先判断一个表达式的布尔值,然后根据布尔值的真伪,执行不同的语句。 基本形式 注意点:对于i...

  • JS中关于if(xx)和 a==b的判断

    一、JS中关于if(xxx)的判断: js是如何处理的?我们先来看几道测试题 以上题目代码的输出结果为: 题目1的...

  • 关于if(xx)与a==b的判断

    关于if(xx)与a==b的判断 简单介绍下if(xx)和a==b的相关判断 if(xx)的判断 1.if(num...

  • 2019-05-17

    关于if(xx)和 a==b的判断 if(xx)的判断 括号中的xx会被强制转换为布尔类型,true 或者 fal...

  • js中关于if(xx)和 a==b

    if判断 在js中一般不使用if(变量)的方式使用if条件语句,容易产生你所不希望的结果,先来看看如下的代码 看了...

  • 2018-03-14

    if(xx)和a==b的判断 在JS中,if语句是最常见的编程语句,语法为if(condition){//true...

  • Javascript 中关于if(xx)和 a==b的判断

    在JavaScript中if(xx)和 x==y的判断 是 非常基础且十分必要的,下面是对着两者的一些总结 if(...

  • 关于if(xx)和 a==b的判断

    if(xx) if后的括号里的表达式会被强制转换为布尔类型 number a = 1if(a){console.l...

  • 关于if(xx)和 a==b的判断

    if的判断 1.if(number)if后的括号里的表达式会被强制转换为布尔类型 例:当 if(number),0...

网友评论

      本文标题:关于JS中if(xx)和 a==b的判断

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