Javascript 如何创建递增全局值的函数?

Javascript 如何创建递增全局值的函数?,javascript,function,Javascript,Function,我目前正在尝试对一个变量执行一些简单的操作,这个变量的值为零。首先,我声明一个变量并给它一个值(0)。其次,我正在创建一个函数,该函数应该在调用该函数时增加变量的值。这是我的代码: var orderCount = 0; function takeOrder(orderCount) { return orderCount++; } takeOrder(orderCount); takeOrder(orderCount); alert(orderCount); 上面代码段的exptecte

我目前正在尝试对一个变量执行一些简单的操作,这个变量的值为零。首先,我声明一个变量并给它一个值(0)。其次,我正在创建一个函数,该函数应该在调用该函数时增加变量的值。这是我的代码:

var orderCount = 0;

function takeOrder(orderCount) {
return orderCount++;
}

takeOrder(orderCount);
takeOrder(orderCount);

alert(orderCount);
上面代码段的exptected结果将是“2”,因为函数被调用两次,因此数字0应该增加两次

我还尝试使用以下代码而不是上面发布的代码递增变量“orderCount”:

function takeOrder(orderCount) {
return orderCount + 1;
}

两者都不起作用。我做错了什么

从参数列表中删除
orderCount
,调用函数时不要将其作为参数。通过将其指定为一个参数,您正在隐藏(隐藏)
takeOrder
关闭的全局变量

var orderCount=0;
函数takeOrder(){
//^-----不要将'orderCount'作为参数
返回orderCount++;
}

takeOrder();// 从参数列表中删除
orderCount
,调用函数时不要将其作为参数。通过将其指定为一个参数,您正在隐藏(隐藏)
takeOrder
关闭的全局变量

var orderCount=0;
函数takeOrder(){
//^-----不要将'orderCount'作为参数
返回orderCount++;
}
takeOrder();// 两个事实:

  • 函数的参数的作用类似于函数范围内的变量。你 可以重新分配它、增加它等。一旦函数完成执行,所有这些更改都将消失

  • 与“全局”变量同名的局部变量隐藏了后者 内部功能体,因此使所有内部功能变化与外部世界隔离

  • 更改参数名也不会有帮助,因为全局变量的值将放在函数调用堆栈上。事实上,传递任何变量都毫无帮助

    典型的解决方案是根本不使用参数,直接在外部范围内更改函数变量

    但是,可以模拟向变量传递“引用”。如果确实希望函数不知道全局变量名:

    var顺序={count:0};
    var anotherOrder={count:0};
    函数takeOrder(订单){
    order.count++;
    }
    订单;
    订单;
    takeOrder(另一个订单);
    console.log(“订单:+Order.count”);
    log(“另一个订单:+anotherOrder.count”)两个事实:

  • 函数的参数的作用类似于函数范围内的变量。你 可以重新分配它、增加它等。一旦函数完成执行,所有这些更改都将消失

  • 与“全局”变量同名的局部变量隐藏了后者 内部功能体,因此使所有内部功能变化与外部世界隔离

  • 更改参数名也不会有帮助,因为全局变量的值将放在函数调用堆栈上。事实上,传递任何变量都毫无帮助

    典型的解决方案是根本不使用参数,直接在外部范围内更改函数变量

    但是,可以模拟向变量传递“引用”。如果确实希望函数不知道全局变量名:

    var顺序={count:0};
    var anotherOrder={count:0};
    函数takeOrder(订单){
    order.count++;
    }
    订单;
    订单;
    takeOrder(另一个订单);
    console.log(“订单:+Order.count”);
    
    log(“另一个订单:+anotherOrder.count”)只需调用函数而不传递参数

    var orderCount=0;
    函数takeOrder(){
    返回orderCount++;
    }
    takeOrder();
    takeOrder();
    
    警报(订单计数)只需调用函数而不传递参数

    var orderCount=0;
    函数takeOrder(){
    返回orderCount++;
    }
    takeOrder();
    takeOrder();
    警报(订单计数)