Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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
Javascript 试图理解一些与js中window.onload相关的代码_Javascript - Fatal编程技术网

Javascript 试图理解一些与js中window.onload相关的代码

Javascript 试图理解一些与js中window.onload相关的代码,javascript,Javascript,问题: 对于window.tdiff->[未定义,1372646227664],为什么不:[,因为当运行到code:window.tdiff时,它仍然是一个空数组 对于window.tdiff.reduce(fred)->1372646227664,window.tdiff=[undefined,1372646227664],undefined-1372646227664,应该是NaN,为什么显示1372646227664 因为数组是一种复杂的javascript类型,其值通过引用传递,所以控制

问题:

  • 对于
    window.tdiff->[未定义,1372646227664]
    ,为什么不:
    [
    ,因为当运行到code:
    window.tdiff
    时,它仍然是一个空数组

  • 对于
    window.tdiff.reduce(fred)->1372646227664
    window.tdiff=[undefined,1372646227664]
    undefined-1372646227664
    ,应该是
    NaN
    ,为什么显示
    1372646227664

  • 因为数组是一种复杂的javascript类型,其值通过引用传递,所以控制台中有一个[],但在window.tdiff[1]=Date.now()之后的几毫秒内,空数组将被新值替换。如果使用window.tdiff.slice(),您将在控制台中获得一个空数组(因为slice使用新引用创建数组的新副本)
  • Reduce回调只是不能使用未定义(未初始化或未初始化)值运行。在您的情况下,reduce只返回第二个值。要了解其工作原理,请使用此链接旁的MDN Reduce Compatibility部分
  • 另外,如果您将console.log添加到fred,您将发现这不是调用

  • 在调用
    console.log
    之前,它填充
    diff
    数组的第二个元素
  • 从文档中:
    reduce
    对数组中存在的每个元素执行一次回调函数,不包括数组中的孔()
  • 从文档中排除了数组中的孔,并且由于数组只有一个元素,因此作为reduce的结果返回该元素

    对于window.tdiff->[undefined,1372646227664],为什么不:[],因为 运行到代码:window.tdiff,它仍然是一个空数组吗

    当您说code:window.tdif时,它不是一个空数组。如果您指的是它作为参数传递给方法的点,但通过time console.log函数计算您传入的值,它不再是一个空数组,因为它已被下一个参数填充

    window.onload load 1372646227664 [undefined, 1372646227664] 1372646227664
    
    正如Arun p Johny在另一个答案中指出的,reduce并没有对未定义的元素应用fred(),这就是为什么不能得到NaN

    window.onload load 1372646227664 [undefined, 1372646227664] 1372646227664
    
    > (window.tdiff[1] = Date.now()) && window.tdiff.reduce(fred) )