为什么这个JavaScript函数被调用两次?

时间:2018-02-08 15:06:50

标签: javascript arrays sorting

在W3 School Array Sort的这个示例中,函数displayCars似乎被调用了2次。它在第一个函数之前和第一个函数内部调用。有人可以解释这背后的原因吗?我无法理解原因。提前谢谢。



var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}]

displayCars();

function myFunction() {
    cars.sort(function(a, b){return a.year - b.year});
    displayCars();
}

function displayCars() {
  document.getElementById("demo").innerHTML =
  cars[0].type + " " + cars[0].year + "<br>" +
  cars[1].type + " " + cars[1].year + "<br>" +
  cars[2].type + " " + cars[2].year;
}
&#13;
<div id="demo"></div>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:5)

它实际上只被调用一次,因为displayCars()的第二次调用是在myFunction内部,而永远不会被调用。

更改代码以致电myFunction并远离W3学校,因为众所周知,这些信息包含不正确和过时的信息。使用Mozilla Developer Network instead

var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}]

myFunction();

function myFunction() {
    cars.sort(function(a, b){return a.year - b.year});
    displayCars();
}

function displayCars() {
  document.getElementById("demo").innerHTML =
  cars[0].type + " " + cars[0].year + "<br>" +
  cars[1].type + " " + cars[1].year + "<br>" +
  cars[2].type + " " + cars[2].year;
}
<div id="demo"></div>

答案 1 :(得分:2)

我被打了两次,以便在排序之前和排序之后显示结果。

您还需要添加#include <limits>的调用。

import * as fs from 'fs'
myFunction

答案 2 :(得分:0)

它被调用一次,但为什么在代码中提到两次是为了让你看到结果,并且在它们被排序之后。

答案 3 :(得分:0)

您的代码段中未调用此函数两次。我假设我们还没有看到更多的代码,它们会调用myFunction;然后,调用该函数两次的目的是显示排序函数的效果。假设在显示功能之后调用myFunction,程序将执行以下操作:

  • 开头的(未排序)顺序显示汽车
  • 运行myFunction对汽车进行分类然后再次显示

这将允许用户在排序之前和之后查看汽车列表之间的差异。

答案 4 :(得分:0)

它只运行一次。你不是在调用myFunction()函数。如果你调用它,数组将排序。 试试这个吧。

var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}]

myFunction();

function myFunction() {
    cars.sort(function(a, b){return a.year - b.year});
    displayCars();
}

function displayCars() {
  document.getElementById("demo").innerHTML =
  cars[0].type + " " + cars[0].year + "<br>" +
  cars[1].type + " " + cars[1].year + "<br>" +
  cars[2].type + " " + cars[2].year;
}

myFunction()将排序数组。 displayCars()将显示数组。