if语句介绍、“==”和“===”的区别

if条件语句

JavaScript的威力在于可以根据人类给出的条件作出相应的决策判断,JavaScript使用条件语句来做判断。
条件语句(conditional statement)通过判断表达式的值来决定执行还是跳过某些语句,包括if语句和switch语句。

if语句

最常见的就是if语句。if语句的条件只能放在圆括号内,条件的结果永远是一个布尔值,即只能是true或flase。花括号中的语句不管有多少条,只有在条件的结果为true时才执行。

if (expression) {
    statements;
}

if语句根据表达式的值改变程序流程。当expression的值为true时执行在其后的代码块,当expression的值为false时执行else后的代码块。

if (expression){
  statements;
} else {
  statements;
}

javascript中if/else匹配规则是:else总是和最近的if匹配

if (i == j){
  if(j == k) {
    console.log( 'i == k');
  else {
    console.log('i != j'); // error
}

if(xxx){

}

// 题目1:如下代码输出什么?
if ("hello") {
    console.log("hello")
}

// 题目2:如下代码输出什么?
if ("") {
    console.log('empty')
}

// 题目3:如下代码输出什么?
if (" ") {
    console.log('blank')
}

// 题目4:如下代码输出什么?
if ([0]) {
    console.log('array')
}

// 题目5:如下代码输出什么?
if('0.00'){
  console.log('0.00')
}

括号里的表达式,会强制转为布尔值

原理

类型 结果
undefined flase
null false
Boolean 直接判断
number +0, −0, 或者 NaN 为 false, 其他为 true
string 空字符串为 false,其他都为 true
Object true

相等 ==

  • 如果两个值类型相同,则执行严格相等的运算
  • 如果两个值的类型不同
    1.如果一个是null,一个是undefined,那么相等
    2.如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
    3.如果一个值是true/false则将其转为1/0比较
    4.如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
    5.其它就不相等了

x == y

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

toNumber

类型 结果
undefined NaN
Null 0
Boolean true -> 1,flase -> 0
String "abc" -> NaN, "123" -> 123

toPrimitive
对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果

你可能感兴趣的:(if语句介绍、“==”和“===”的区别)