我是Javascript的新手,我不确定为什么我的代码能正常工作。
我通过Codecademy学习,这是我的代码:
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');
但是,我真的不确定。我宁愿知道为什么我的代码可以工作:)
最佳答案
简而言之,您正在使用共享变量(例如本地存储)在函数之间传递数据。请阅读有关variable scoping in javascrpt的更多信息。orderCount
变量是全局范围的。因此,您可以从任何函数(类似于java / C中的静态变量)访问它。每次执行takeOrder
函数时,都会将此变量加1。
当执行getSubTotal
功能时,您正在读取它的值和打印订单的总价。
您的情况:
第一次执行takeOrder
时,您已将orderCount
递增到1,然后是2和3。执行getSubTotal
函数时,您正在读取全局变量值(3)并计算总价。
小费:
当您继续学习本教程时,您将了解到最好将两个方法都包装在一个对象中,然后将变量添加到该对象内,而不是全局变量。因为您拥有更多的全局变量,所以使用它们变得更加困难。