美文网首页
if() & a==b的判断

if() & a==b的判断

作者: Hsienfeng | 来源:发表于2018-06-13 17:01 被阅读0次
if语句

if语句是编程语言最常用的语句,语法

if(condition){
    //true statement
}else {
    //false statement
}

其中condition可以是任意表达式,结果不一定是布尔值,JavaScript解释器会自动调用Boolean()将表达式结果转为布尔值,如果表达式为真,执行第一个代码块内语句,如果为假,执行第二个代码块内语句。

例如:

var a = 3;
if(a === 1){
  console.log('ok')
}else{
  console.log('not ok')
}//输出结果为not ok

当转换成boolean类型时遵循下列规则:

  • 如果表达式的值是一个对象,返回true
  • 如果表达式的值是一个空字符串,返回false
  • 如果表达式的值是一个非空字符串,返回true
  • 如果表达式的值是数值0,或NaN,返回false
  • 如果表达式的值是任意非零数值(包括Infinity),返回true
  • 如果表达式的值是null,返回false
  • 如果表达式的值是undefined,返回false

示例:

/* 字符串 */
if ("hello") {
  console.log("true");
} // true

if ("") {
  console.log("true");
} // true

if (" ") {
  console.log("true");
} // true

if ("0.00") {
  console.log("true");
} // true

/* 数值 */
if (0.00) {
  console.log("true");
} // false

/* 对象 */
if ({}) {
  console.log("true");
} // true

if ([]) {
  console.log("true");
} // true

a==b相等运算符

相等运算符用来比较相同类型的数据时,与严格相等运算符完全一样。

比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。类型转换规则如下:

(1)原始类型的值

原始类型的数据会转换成数值类型再进行比较。

1 == true // true
// 等同于 1 === Number(true)

0 == false // true
// 等同于 0 === Number(false)

2 == true // false
// 等同于 2 === Number(true)

2 == false // false
// 等同于 2 === Number(false)

'true' == true // false
// 等同于 Number('true') === Number(true)
// 等同于 NaN === 1

'' == 0 // true
// 等同于 Number('') === 0
// 等同于 0 === 0

'' == false  // true
// 等同于 Number('') === Number(false)
// 等同于 0 === 0

'1' == true  // true
// 等同于 Number('1') === Number(true)
// 等同于 1 === 1

'\n  123  \t' == 123 // true
// 因为字符串转为数字时,省略前置和后置的空格

上面代码将字符串和布尔值都转为数值,然后再进行比较。

(2)对象与原始类型值比较

对象(这里指广义的对象,包括数组和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。

[1] == 1 // true
// 等同于 Number([1]) == 1

[1] == '1' // true
// 等同于 Number([1]) == Number('1')

[1] == true // true
// 等同于 Number([1]) == Number(true)

上面代码中,数组[1]与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成数值,然后再与字符串进行比较,这时字符串也会转成数值;与布尔值进行比较,两个运算子都会先转成数值,然后再进行比较。

(3)undefined 和 null

undefinednull与其他类型的值比较时,结果都为false,它们互相比较时结果为true

false == null // false
false == undefined // false

0 == null // false
0 == undefined // false

undefined == null // true

绝大多数情况下,对象与undefinednull比较,都返回false。只有在对象转为原始值得到undefined时,才会返回true,这种情况是非常罕见的。

相关文章

  • if() & a==b的判断

    if语句 if语句是编程语言最常用的语句,语法 其中condition可以是任意表达式,结果不一定是布尔值,Jav...

  • id is ==

    id() 获取当前对象或基础类型的数据的地址 a is b 判断a与b的地址是否相同 a == b 判断a与b的值...

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

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

  • [Python]"is"和"=="以及一个新发现

    is是判断地址相同,==是判断值相同 a=1 b=a print(b is a)#True print(a is ...

  • Mr.Li--python-高级编程

    is,==的区别 a is b-->判断a和b是否指向同一块内存空间 a==b-->判断a和b指向的空间里的内容是...

  • python 随笔

    1. python 逻辑判断 A,B 是两个判断表达式 if A and B # 会先判断A,如果A为t...

  • pythonic

    判断 c = a if a>b else b //如果a>b返回a,否则返回b 置换变量 a,b=b,a 逗...

  • python中的‘==’与‘is’

    a is b :判断a和b是否指向同一块内存空间a == b :判断a和b指向的空间里的内容是否一样 在pytho...

  • 2019-05-03

    instanceof的实现 function instanceOf(a,b) { //a是否是b的实例?判断b.p...

  • Python is 与 == 的区别

    打印结果 is是用于判断 a b 是否指向同一个对象==是用于判断 a b 的值是否相等

网友评论

      本文标题:if() & a==b的判断

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