请教js中,return,return 0,return false有什么区别?

回复这个问题的评论想到的
平时会用return false阻止系统默认事件,比如

javascript$('a').click(function(){
    //一些操作
    return false;
});

我也知道return的值可以定义一个变量接收,比如

var result = function( a, b ){
    return a==b ? 1 : 0;
}
console.log(result);

但是0不是也是为假么,为什么 return 0 就不行?
我知道return falsereturn 0肯定有不一样,但是不知道是什么不一样~请教大家!

阅读 12.1k
2 个回答

0 就是 0, 0 不是假,0 类型转换成 false 之后才是假。

function returnFalse() { return false; }
function returnZero() { return 0; }

if( returnFalse() === false ) console.log("I'm preventDefault() by false");
if( returnZero() === false ) console.log("I'm perventDefault() by zero");

0只有看做表达式的时候,才具有表达false的性质,比如:

if(0){
console.log(true);
}else{
console.log(false);
}

而这里的 :

return a==b ? 1 : 0;

0其实是作为语句存在的 。

向这样语句用表达式来表示的现象还有这样:
会被视为false的值有:

  1. 数字0
  2. 空字符串''或""
  3. 布尔值false
  4. null
  5. undefined

这里有提到

推荐问题
宣传栏