理解JavaScript Truthy和Falsy

时间:2016-02-26 03:20:00

标签: javascript

有人可以使用以下示例数据解释JavaScript Truthy和Falsy。我已阅读其他帖子但仍感到困惑。

var a = 0;

var a = 10 == 5;

var a = 1; 

var a = -1;

根据我的理解,我相信var a = 1;是唯一真正的,其余的都是假的 - 这是正确的吗?

9 个答案:

答案 0 :(得分:33)

  

据我了解,我相信var a = 1;是唯一的真理,其余的都是假的 - 这是正确的吗?

否。

  1.   

    var a = 0;

    数字零是 falsy 。但请注意,字符串零"0"是真实的。

  2.   

    var a = 10 == 5;

    这与var a = (10 == 5);相同,因此 falsy

  3.   

    var a = 1;

         

    var a = -1;

    包括负数在内的任何非零数字都是 truthy

  4. 引自MDN

      

    在JavaScript中,truthy值是在布尔上下文中求值时转换为true的值。所有值都是真实的,除非它们被定义为假(即false0""nullundefined和{{1}除外})。

    JavaScript中的虚假值列表: From MDN

    1. NaN
    2. false
    3. null
    4. undefined
    5. 0
    6. NaN
    7. ''

答案 1 :(得分:12)

有一种简单的方法可以检查,现在可以永久使用:

document.all

即便:

function truthyOrFalsy(a) {
    return a ? "truthy" : "falsy";
}

另见a list of all falsey values in JavaScript

答案 2 :(得分:2)

Truthy->在布尔上下文中解析为true的值

Falsy->在布尔上下文中解析为false的值


为更好地理解,下面给出了falsy值。

  1. false
  2. 0
  3. empty string
  4. null
  5. undefined
  6. NaN

答案 3 :(得分:1)

错误

  • false
  • 0(零)
  • “”,“,”(空字符串)
  • 未定义
  • NaN(不是数字)

注意:空数组([])不是虚假

真实

  • 一切都不假

答案 4 :(得分:1)

在JavaScript中,&&||并不总是产生布尔值。这两个运算符总是返回其操作数表达式之一的值。使用双重否定!!Boolean函数,可以将“ truthy”和“ falsy”值转换为正确的布尔值。

true && true =>
true

true && false =>
false

true && 'rahul626'=>
"rahul626"

true && 'i am testing Truthy' && ' upvote it'=>
" upvote it"

Try, tried on console

Well described here

答案 5 :(得分:0)

简而言之,伪造值只有6种类型: 您可以使用此代码片段对其进行测试:

useEffect(async () => {
  const data = await fetch(...);
  const json = await data.json();
  // etc.

});

return (
  //... your code
);

有关详情,请访问此网站:https://developer.mozilla.org/en-US/docs/Glossary/Falsy

答案 6 :(得分:0)

检查Falsy值和True值的简便方法

function truthyOrFalsy(val){
  if(val){
    console.log (`${val} is truthy`);
  } else{
    console.log (`${val} is falsy`);
  }   
}

检查所有FALSY值:

truthyOrFalsy(false);      //Output: false is falsy
truthyOrFalsy(null);       //Output: null is falsy
truthyOrFalsy(0);          //Output: 0 is falsy
truthyOrFalsy('');         //Output:  is falsy  [blank refers to '']
truthyOrFalsy(NaN);        //Output: NaN is falsy
truthyOrFalsy(undefined);  //Output: undefined is falsy

请注意,undefined并未明确用于设置为值。 某些常见情况会创建未定义的内容:

  • 在函数中定义但在回调函数中未传递参数的参数。
  • 如果函数没有返回结果
  • 如果访问未定义的对象属性/方法
  • 如果访问未定义的数组元素
function add(num1, num2){   
    console.log(num1, num2);    
}
const result = add(44);
console.log(result);
//Output: 44 undefined
//        undefined

const car = {color:"Blue", price: 200000};
console.log(car.category);
//Output: undefined
arrColors = ["Blue", "Sky", "Purple"];
console.log(arrColors[5]);
//Output: undefined

检查所有真实值

除非定义为虚假,否则所有值都是真实的。

尽管' ', '0', -1, []可以参加检查。

truthyOrFalsy(' ');      //Output: is truty     [blank refers to space inside 
                         //                       quote ]
truthyOrFalsy('0');       //Output: 0 is truty 
truthyOrFalsy([]);          //Output: is truty  [blank refers to an empty array]
truthyOrFalsy(-1);         //Output: -1 is truty 

答案 7 :(得分:0)

另一个检查版本:

function truthyOrFalsy(a) {
    return (a && "truthy") || "falsy";
}

答案 8 :(得分:0)

另一种评估我喜欢使用的东西是真还是假的方法是

function truthyOrFalsy(a) {
  return !!a;
}