根据下列实例,请问关于!~请问该如何理解?

验证arr[2]中的元素是否都在arr[1]中

function mutation(arr) {

  var newStr1 = arr[0].toLowerCase(),

  newStr2 = arr[1].toLowerCase();

  for(var i=0; i<newStr2.length; i++) {

    if(!~newStr1.indexOf(newStr2[i])) {

      return false;

    }

    

  }

  return true;

}


mutation(["hello", "hey"]);

//请问if条件中的!~该如何理解?


湖上湖
浏览 411回答 1
1回答

白板的微信

在这里相当于if( newStr1.indexOf(newStr2[i]) === -1)。-1按位取反后结果为0,再用!取反后结果为truthy。这里当且仅当newStr1.indexOf(newStr2[i])的结果为-1时,if的判断条件为truthy。ES6以后有了String.includes(),这种写法就不常用了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript