Javascript 解释此函数如何删除负值 功能弹跳器(arr){ //不要向这个保镖出示假身份证。 对于(变量i=0;i

Javascript 解释此函数如何删除负值 功能弹跳器(arr){ //不要向这个保镖出示假身份证。 对于(变量i=0;i,javascript,arrays,loops,Javascript,Arrays,Loops,我不明白感叹号在条件句中是怎么起作用的。我知道这是用来否定的,但我不明白怎么否定 function bouncer(arr) { // Don't show a false ID to this bouncer. for (var i = 0; i < arr.length; i++) { if (!arr[i]) { arr.splice(i, 1); i = i-1; } } re

我不明白感叹号在条件句中是怎么起作用的。我知道这是用来否定的,但我不明白怎么否定

function bouncer(arr) {
  // Don't show a false ID to this bouncer.

  for (var i = 0; i < arr.length; i++) {
        if (!arr[i]) {
            arr.splice(i, 1);
            i = i-1;
        }
    }
    return arr;

}

bouncer([7, "ate", "", false, 9]);
基本上是指如果不是arr[i]。这是因为js中的值是truthy或falsy,因此只有falsy值会通过上限条件(如果不是falsy==true):


如果没有arr[i]…
警报(!false);警报(!null);警报(!未定义)..@per svensson不,它的意思是不…@per svensson没错。但是意味着falsy IsnYou可以简化您的bouncer函数,以
返回arr.filter(e=>e)
if (!arr[i]) {
null,undefined,"",0,false