JavaScript小知识

JS中一些实用小知识

1.如何判断一个变量是否已经被定义?例如判断当前环境是否存在”foo”。 你是否会想到 if(foo) 这种判断?

if(foo){
    console.log("foo存在");
}

if(!foo){
    console.log("foo存在");
}


if(window["foo"] == undefined){
  console.log("foo不存在");
}

这样是都会直接报错的。

if(typeof foo !== undefined){
    console.log("foo存在");
}

这样就不会错报错。 答案应该使用 typeof 来进行判断,直接使用if 判断如果不存在就会报错未定义 ,但是使用if 和typeof 组合就不会报错了。

应用场景比如判断当前是node环境还是引用环境 node环境需要用到module.exports,但是引用环境不一定有module这个东西

if(typeof module == undefined){
    module.exports = foo;
}

关于 !和 !! 用法 1、!可将变量转换成boolean类型,null、undefined,0和空字符串取反都为true,其余都为false。

!null=true

!undefined=true

!''=true

!100=false

!'abc'=false

!0=true

2、!!常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码: 判断变量a为非空,未定义或者非空串才能执行方法体的内容

var a;
if(a!=null&&typeof(a)!=undefined&&a!=''){
    //a有内容才执行的代码  
}
实际上我们只需要写一个判断表达
if(!!a){
    //a有内容才执行的代码...  
}

可以总结出来,“!”是逻辑与运算,并且可以与任何变量进行逻辑与将其转化为布尔值,“!!”则是逻辑与的取反运算,尤其后者在判断类型时代码简洁高效,省去了多次判断null、undefined和空字符串的冗余代码。