js中的if语句

if(condition) {
  statement
}
if(condition) {
  sattement1
} else {
  statement2
}
if(condition) {
  statement1
} else if() {
  statement2
} else {
  statement3
}

其中condition可以是任意表达式,而且对这个表达式求值的结果不一定是布尔值。
ECMAScript会自动调用Boolean()转换函数将这个表达式的结果转化为一个布尔值。

Boolean()转换rules

各种数据类型及其对应的转换规则。

数据类型 转换为true的值 转换为false的值
Boolean true false
Undefined 不适用 undefined
String 任何非空字符串 ”“(空字符串)
Number 任何非零数字值(包括负数、正负无穷大) 0和NaN
Object 任何对象(包括{ }、[ ] ) null
Function all(所有的) no(无)

Boolean()转换未声明的变量会报错。

Boolean()转换的demo

Boolean类型

var a = true;
var b = false;

console.log(Boolean(a)); // true
console.log(Boolean(b)); // false

Undefined类型

var c = undefined;  
var d;

console.log(Boolean(c)); // false
console.log(Boolean(d)); // false

console.log(Boolean(x)); // Error: Uncaught ReferenceError: x is not defined

String类型

var str1 = "a";
var str2 = " ";
var str3 = "false";

var str4 = "";

console.log(Boolean(str1)); // true
console.log(Boolean(str2)); // true
console.log(Boolean(str3)); // true

console.log(Boolean(str4)); // false

Number类型

var num1 = 1;
var num2 = -1;
var num3 = Infinity;
var num4 = -Infinity;

var num5 = 0;
var num6 = NaN;

console.log(Boolean(num1)); // true
console.log(Boolean(num2)); // true
console.log(Boolean(num3)); // true
console.log(Boolean(num4)); // true

console.log(Boolean(num5)); // false
console.log(Boolean(num6)); // false

Object类型

var obj1 = {
  name: "peng"
};
var obj2 = {};
var obj3 = [];

var obj4 = null;

console.log(Boolean(obj1)); // true
console.log(Boolean(obj2)); // true
console.log(Boolean(obj3)); // true

console.log(Boolean(obj4)); // false

Function类型

var f1 = function(){};
var f2 = function f2(){};
var f3 = function(){ return false };

console.log(Boolean(f1)); // true
console.log(Boolean(f2)); // true
console.log(Boolean(f3)); // true

console.log(Boolean(f3())); // false