# JavaScript 中的真值和假值

> 原文： [https://howtodoinjava.com/typescript/truthy-and-falsy/](https://howtodoinjava.com/typescript/truthy-and-falsy/)

在 JavaScript 中，真值是等于布尔值`true`的表达式，而假值则是等于布尔值`false`的表达式。 与其他语言不同，`true`和`false`值不限于`boolean`数据类型和比较。 它可以具有许多其他形式。

让我们了解什么使 JavaScript 中的真假表达式成为事实。

## 假值

javascript 中共有 **6 个假值/表达式**。 我将使用此函数来检查值是真值还是假值。

```java
function testTruthyFalsy (val) 
{ 
  	return val ? console.log('truthy') : console.log('falsy'); 
} 

```

布尔‘`false`’

显然布尔值`false`是`false`。

```java
			testTruthyFalsy (false);	//Prints 'falsy'

```

空字符串，即`''` 

任何空字符串都将被求值为`false`。

```java
			testTruthyFalsy ('');	//Prints 'falsy'

```

`undefined`

任何`undefined`变量将等于`false`。

```java
			var my_var = undefined;
			testTruthyFalsy (my_var);	//Prints 'falsy'

```

`null`

任何`null`变量将等于`false`。

```java
			var my_var = null;
			testTruthyFalsy (my_var);	//Prints 'falsy'

```

`NaN`

结果为`NaN`（不是数字）的任何数值表达式都将等于`false`。

```java
			testTruthyFalsy (NaN);		//Prints 'falsy'

```

数字零，即 +0 或 -0

任何结果为零（`+0`或`-0`）的数值表达式都将等于`false`。

```java
			testTruthyFalsy ( 2 - 2 );		//Prints 'falsy'
			testTruthyFalsy ( 0 );	//Prints 'falsy'

```


## 真值

除了上面列出的假值以外的任何表达式或值 - 被认为是真值。 例如：

```java
function testTruthyFalsy (val) 
{ 
  	return val ? console.log('truthy') : console.log('falsy'); 
} 

testTruthy(true); 					// truthy 
testTruthy(false); 					// falsy 
testTruthy(new Boolean(false)); 	// truthy (object is always true) 

testTruthy(''); 					// falsy 
testTruthy('Packt'); 				// truthy 
testTruthy(new String('')); 		// true (object is always true) 

testTruthy(1); 						// truthy 
testTruthy(-1); 					// truthy 
testTruthy(NaN); 					// falsy 
testTruthy(new Number(NaN)); 		// truthy (object is always true) 

testTruthy({}); 					// truthy (object is always true) 

var obj = { name: 'John' }; 
testTruthy(obj); 					// truthy 
testTruthy(obj.name); 				// truthy 

```

将我的问题放在评论部分。

学习愉快！