函数判断与Js中的’&& ||‘+假值

 _.isFunction = function(obj){
    return typeof obj == 'function' || false;
}

就是简单判断一个函数而已,不过可以扩展出一个知识点嘿嘿,

你是怎么看js中的&&,||

与其说是逻辑运算符,不如说是属性选择符。

  • &&执行方式(a&&b):

    • 如果a为true,返回b

    • 否则返回a

  • ||执行方式(a || b):

    • 如果a为true, 返回a

    • 否则返回b

'' || [1,2] //[1,2]
'' && [1,2] //""

[1] || [] //[1]
[1] && [] //[]

然后把js中为false的属性整理一下啦:

ES5规范9.2定义了抽象操作ToBoolean,列举了布尔强制类型转换所有可能出现的结果。

  • undefined

  • null

  • false

  • +0,-0 和 NaN

  • ""

从逻辑上说,假值列表以外的都应该是真值。

  • 除了'',其他的字符串都是真值。

let a  = 'false';
let b = '0';
let c = "''";

let d = Boolean(a && b && c );
d; // true
  • [],{},fucntion(){}都不在假值列表里,所以他们都是真值。

let a  = [];
let b = {};
let c = function(){};

let d = Boolean(a && b && c );
d; // true

真值列表是无限长的,我们只能根据假值列表作为参考,可以理解位假值列表以外的值都是真值。

  • 常用的 || 用法:设置默认值

function foo(a,b){
    a = a || 'hello';
    b = b || 'world';

    console.log(a + ' ' + b);
};

foo(1);// '1 world'
  • js代码压缩工具常用的‘守护运算符’:

function foo(){
    console.log(a);
};

let a = 1;
a && foo(); 
//当第一个操作数为真值时,&&才会选择第二个操作数作为返回值,即前面的表达式为后面的表达式'把关'

Last updated