Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用array.every()方法的JavaScript箭头函数中(x=>;x)的含义_Javascript_Arrow Functions - Fatal编程技术网

使用array.every()方法的JavaScript箭头函数中(x=>;x)的含义

使用array.every()方法的JavaScript箭头函数中(x=>;x)的含义,javascript,arrow-functions,Javascript,Arrow Functions,正在查找关于这行代码的解释。我在一定程度上理解箭头的功能。此代码段/质询的目的是:;“给定任意数量的参数,如果没有任何参数是错误的,则返回true。”我见过这样的解决方案: const nothingIsNothing = (...args) => args.every(x => x) 参数和预期结果的示例如下: nothingIsNothing(0, false, undefined, null) ➞ false nothingIsNothing(33, "Hello

正在查找关于这行代码的解释。我在一定程度上理解箭头的功能。此代码段/质询的目的是:;“给定任意数量的参数,如果没有任何参数是错误的,则返回true。”我见过这样的解决方案:

const nothingIsNothing = (...args) => args.every(x => x)
参数和预期结果的示例如下:

nothingIsNothing(0, false, undefined, null) ➞ false

nothingIsNothing(33, "Hello",  true,  []) ➞ true

nothingIsNothing(true, false) ➞ false

我只是不明白部分
(x=>x)
如何计算为truthy或falsy。有人能解释一下这是怎么回事吗?我希望这是有意义的lol。谢谢

使用
.every
,如果回调的任何返回值为false,则
.every
的计算结果为
false
,否则它的计算结果为
true
。因此,
x=>x
作为回调意味着:获取数组中的每个值并立即返回它。如果全部都是真实的,则整个
。每个
的计算结果都是
true
,否则
false

它的逻辑与此相同:

const nothingIsNothing = (...args) => {
  for (const arg of args) {
    if (!arg) return false;
  }
  return true;
};
或者,实现类似于
的功能。每个
您自己:

//不要在实际代码中这样做,这只是一个示例
Array.prototype.myEvery=函数(回调){
用于(本工程施工项目){
如果(!回调(项))返回false;
}
返回true;
};
log([1,2,3].myEvery(x=>x));

log([1,2,3,0].myEvery(x=>x))它是一对事物的组合

  • Javascript隐式
    return
    语句
  • getVal=a=>a

    function getVal(a) { return a }
    
  • 每个web API方法都会运行,直到遇到
    falsy
    (非false)值为止。下面是MDN的一段引文
  • every方法为每个函数执行一次提供的回调函数 元素出现在数组中,直到找到回调 返回一个伪值。如果找到这样的元素,则每个方法 立即返回false。否则,如果回调返回一个truthy 值,则每个元素都返回true


    param=>param
    (param)=>{return param}

    以下是JavaScript中的所有falsy值:

    每个
    的返回值的文档说明如下:

    如果回调函数为每个数组返回truthy值,则为true 元素。否则,错误

    所以像这样的东西是假的,因为不是所有的元素都是真实的

    const x=['test',0,null,-0].every(el=>el);
    控制台日志(x)every()
    方法测试数组中的所有元素是否通过所提供函数实现的测试。如果回调函数为每个数组元素返回一个值,它将返回一个
    布尔值,即
    true
    。否则,
    false

    const nothingsnothing=(…args)=>args。每个(x=>x)
    可以扩展为:

    const nothingIsNothing = (...args) => args.every(function(x){
    if(x)
      return true
    else 
      return false
    })
    
    这是另一个版本,它将帮助你更好地理解速记。将值x类型转换为布尔值,并返回true/false。
    const nothingsnothing=(…args)=>args.every(布尔值)
    log(nothingIsNothing(0,false,未定义,null))
    log(nothingIsNothing(33,“Hello”,true,[])
    在这里执行繁重的操作

    every()方法测试数组中的所有元素是否通过 由提供的函数实现的测试。它返回一个布尔值

    遵循ECMA-262第5个规范的PolyFil,假设Object和TypeError具有其原始值,并且callbackfn.call的计算结果为Function.prototype.call的原始值,很好地演示了内部行为:

    Array.prototype.PolyFillEvery=函数(callbackfn,thisArg){
    "严格使用",;
    变量T,k;
    if(this==null){
    抛出新的TypeError('这是null或未定义');
    }
    //1.让O作为调用ToObject的结果,并传递this
    //值作为参数。
    var O=对象(此);
    //2.让lenValue作为调用Get internal方法的结果
    //带参数“length”的O。
    //3.将len设为ToUint32(lenValue)。
    var len=O.length>>>0;
    //4.如果IsCallable(callbackfn)为false,则抛出TypeError异常。
    if(typeof callbackfn!='function'&&Object.prototype.toString.call(callbackfn)!='[Object function]'){
    抛出新的TypeError();
    }
    //5.如果提供了thisArg,则T为thisArg;否则T为未定义。
    如果(arguments.length>1){
    T=thisArg;
    }
    //6.设k为0。
    k=0;
    //7.当kx))//假的
    log(arTruthy.PolyFillEvery(x=>x))//真的
    
    log([true,false].PolyFillEvery(x=>x))//false
    位于
    =>
    右侧,是在箭头函数上没有
    {}
    的情况下返回的值。您了解胖箭头和隐式返回吗?你明白吗