Javascript逻辑误解
我是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
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')