Javascript逻辑误解

Javascript逻辑误解,javascript,Javascript,我是Javascript的新手,我不知道为什么我的代码可以工作。 我通过以下代码学习: var orderCount = 0 function takeOrder(topping, crustType) { orderCount = orderCount + 1; console.log('Order: ' + crustType + ' pizza topped with ' + topping); console.log(getSubTotal(orderCount)); } f

我是Javascript的新手,我不知道为什么我的代码可以工作。 我通过以下代码学习:

var orderCount = 0
function takeOrder(topping, crustType) {
  orderCount = orderCount + 1;
  console.log('Order: ' + crustType + ' pizza topped with ' + topping);
  console.log(getSubTotal(orderCount));
}
function getSubTotal(itemCount) {
  return itemCount * 7.5
}
takeOrder('peperoni', 'thin');
takeOrder('extra Cheese', 'medium')
takeOrder('Bacon', 'EXTRA THICK')
我得到了我想要的输出,即:

点餐:薄薄的比萨饼,上面撒上胡椒粉 7.5

点餐:中等比萨,外加15块奶酪

订单:加培根的特厚比萨饼 22.5

但是为什么呢?Javascript如何知道代码中有多少个订单?
我猜是因为
orderCount=orderCount+1和:

takeOrder('peperoni', 'thin');
takeOrder('extra Cheese', 'medium');
takeOrder('Bacon', 'EXTRA THICK');
但是,我真的不确定。我更想知道我的代码为什么工作:)

您可以使用
0
初始化
orderCount

    function takeOrder(topping, crustType){
     orderCount = orderCount + 1; 
     /* more code here */
    }
每次调用此函数时,
+1
orderCount

    takeOrder('peperoni', 'thin');
当前
orderCount
=
0
,调用了
takeOrder
,因此
orderCount
=0+1

    takeOrder('extra Cheese', 'medium');
当前
orderCount
=
1
,再次调用
takeOrder
,因此
orderCount
=1+1

    takeOrder('Bacon', 'EXTRA THICK')
当前
orderCount
=
2
,再次调用
takeOrder
,因此
orderCount
=2+1


由于您调用了该函数3次,因此最终的
orderCount
3

简言之您正在使用共享变量(如本地存储)在函数之间传递数据。请阅读了解更多

orderCount
变量属于全局范围。因此,您可以从任何函数(类似于java/C中的静态变量)访问它。每次执行
takeOrder
函数时,都会将此变量递增一。 执行
getSubTotal
函数时,读取其值并打印订单总价

您的场景: 在第一次执行时,
takeOrder
会将
orderCount
增加到1,然后是2和3。执行
getSubTotal
function时,读取全局变量值(3)并计算总价

提示
当您继续学习教程时,您将了解到最好将这两个方法包装在一个对象中,并在该对象中添加变量,而不是全局变量。因为您拥有的全局变量越多,使用它们就越困难。

Javascript使用类似于c或java的作用域系统。orderCount变量在全局范围内,因此所有函数都可以访问orderCount变量。你可以参考
    takeOrder('Bacon', 'EXTRA THICK')