Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 职能范围是什么?我应该使用已经实例化的变量吗?_Javascript_Function_Scope - Fatal编程技术网

Javascript 职能范围是什么?我应该使用已经实例化的变量吗?

Javascript 职能范围是什么?我应该使用已经实例化的变量吗?,javascript,function,scope,Javascript,Function,Scope,我现在正在读第一本你不知道JS的书,向上走。我试图建立他们的第一个演习的基础上购买手机和配件,但我有麻烦,我不明白为什么。我简化了这个特定场景的代码,看看是否有人可以在这里提供帮助。我的所有函数都不工作:(我的输出如下所示: YDKJS2.js:38 Your total purchase before taxes is: 1049.9 YDKJS2.js:42 Your total purchase after taxes is: 1049.9 YDKJS2.js:46 Your remain

我现在正在读第一本你不知道JS的书,向上走。我试图建立他们的第一个演习的基础上购买手机和配件,但我有麻烦,我不明白为什么。我简化了这个特定场景的代码,看看是否有人可以在这里提供帮助。我的所有函数都不工作:(我的输出如下所示:

YDKJS2.js:38 Your total purchase before taxes is: 1049.9
YDKJS2.js:42 Your total purchase after taxes is: 1049.9
YDKJS2.js:46 Your remaining account balance is: function remBalance( bal , total ){
 bal = bal - total;

 return bal;
}
我已经尝试使用已经实例化的相同变量,但它们仍然不起作用

const SPENDING_THRESHOLD = 200;
const TAX_RATE = 0.08;
const ACCESSORY_PRICE = 9.99;
const PHONE_PRICE = 199.99;

var totalPurchase = 0;
var numberPhones = 0;
var numberAccessories = 0;
var accountBalance;

function calculateTax( amt ){
 amt = amt + (amt * TAX_RATE);

 return amt;
}

function remBalance( bal , total ){
 bal = bal - total;

 return bal;
}

accountBalance = prompt( "How much money is in your bank account right now?" );

while( totalPurchase < accountBalance ){
 totalPurchase = totalPurchase + PHONE_PRICE;

 numberPhones++;

 if( PHONE_PRICE < SPENDING_THRESHOLD ){
 totalPurchase = totalPurchase + ACCESSORY_PRICE;

 numberAccessories++;
    }

}

console.log("Your total purchase before taxes is: " +totalPurchase);

calculateTax(totalPurchase);

console.log( "Your total purchase after taxes is: " + totalPurchase );

remBalance( accountBalance , totalPurchase);

console.log("Your remaining account balance is: " +remBalance);
const-SPENDING\u阈值=200;
施工税税率=0.08;
施工配件价格=9.99;
const PHONE_PRICE=199.99;
var totalPurchase=0;
var numberPhones=0;
var numberAccessories=0;
var账户余额;
函数计算器(amt){
金额=金额+(金额*税率);
返回金额;
}
功能余额(余额,合计){
bal=bal-总计;
返回bal;
}
accountBalance=prompt(“您的银行账户现在有多少钱?”);
while(采购总额<账户余额){
totalPurchase=totalPurchase+电话价格;
数字电话++;
如果(电话价格<支出阈值){
总采购=总采购+配件价格;
numberAccessories++;
}
}
console.log(“您的税前总购买量为:“+totalPurchase”);
CalculateAX(总采购);
console.log(“您的税后总购买量为:“+totalPurchase”);
remBalance(账户余额、总购买);
console.log(“您的剩余帐户余额为:“+remBalance”);

作用域它就像变量/函数等的可视区域。通常您在全局作用域中工作。如果您在函数中编写代码,您将开始使用函数作用域,受其自身变量、函数等的限制。但在正常情况下,您可以访问全局作用域并使用它


在您的示例中,您应该检查where是一个变量,where是一个函数。您使用的“remBalance”不带大括号,但在此之前您定义了它类似于一个函数。因此,它需要使用类似于“remBalance(bal,total)”.Scope它就像变量/函数等的可视区域。通常您在全局范围内工作。如果您在函数内编写代码,您将开始使用函数范围,受其自身变量、函数等的限制。但在正常情况下,您可以访问全局范围并使用它

在您的示例中,您应该检查where是变量,where是函数。您使用不带大括号的“remBalance”,但在此之前,您定义了它类似于函数。因此它需要使用类似于“remBalance(bal,total)”的值。

const expensing\u THRESHOLD=200;
施工税税率=0.08;
施工配件价格=9.99;
const PHONE_PRICE=199.99;
让totalPurchase=0;
设numberPhones=0;
设numberAccessories=0;
设账户余额=973.17;
函数计算器(amt){
金额=金额+(金额*税率);
返回金额;
}
功能余额(余额,合计){
bal=(bal-总计);
返回bal;
}
while(采购总额<账户余额){
totalPurchase=totalPurchase+电话价格;
数字电话++;
如果(电话价格<支出阈值){
总采购=总采购+配件价格;
numberAccessories++;
}
}
console.log(“您的税前总购买量为:“+totalPurchase”);
totalPurchase=CalculateAX(totalPurchase);
console.log(“您的税后总购买量为:“+totalPurchase”);
accountBalance=remBalance(accountBalance,totalPurchase);
console.log(“您的剩余帐户余额为:“+accountBalance”);
谢谢大家的帮助! :)::)::):):)

const-SPENDING_-THRESHOLD=200;
施工税税率=0.08;
施工配件价格=9.99;
const PHONE_PRICE=199.99;
让totalPurchase=0;
设numberPhones=0;
设numberAccessories=0;
设账户余额=973.17;
函数计算器(amt){
金额=金额+(金额*税率);
返回金额;
}
功能余额(余额,合计){
bal=(bal-总计);
返回bal;
}
while(采购总额<账户余额){
totalPurchase=totalPurchase+电话价格;
数字电话++;
如果(电话价格<支出阈值){
总采购=总采购+配件价格;
numberAccessories++;
}
}
console.log(“您的税前总购买量为:“+totalPurchase”);
totalPurchase=CalculateAX(totalPurchase);
console.log(“您的税后总购买量为:“+totalPurchase”);
accountBalance=remBalance(accountBalance,totalPurchase);
console.log(“您的剩余帐户余额为:“+accountBalance”);
谢谢大家的帮助!
:):)::):):):)

remBalance
是一个函数-您必须调用它:
remBalance()
尝试以与使用
提示符
相同的方式使用这些函数;使用它们的返回值。只是一个观察:您不需要在代码顶部声明每个变量和函数,因为javascript中有一个名为:。你也可以在你正在使用的函数中声明变量和常量,所以你可以,我不知道这本书是怎么介绍的,但它可能在那里。
remBalance
是一个函数-你必须调用它:
remBalance()
尝试用你使用
prompt
的同样方法使用这些函数;使用它们的返回值。只是一个观察:您不需要在代码顶部声明每个变量和函数,因为javascript中有一个名为:。你也可以在你正在使用的函数中声明你的变量和常量,所以你可以,虽然我不知道这本书是怎么讲的,但它可能在那里。我修复了一切!非常感谢。顺便问一下,如果您想让程序在超过帐户余额之前停止运行,您会在这个逻辑中改变什么?我正在考虑将while循环更改为while(totalPurchase<(accountBalance-PHONE_PRICE))-这是一种正确的方法吗?还是有更合理的方法?我把一切都修好了!非常感谢。顺便问一下,如果你想要这个程序,你会改变这种逻辑吗
const SPENDING_THRESHOLD = 200;
const TAX_RATE = 0.08;
const ACCESSORY_PRICE = 9.99;
const PHONE_PRICE = 199.99;
let totalPurchase = 0;
let numberPhones = 0;
let numberAccessories = 0;
let accountBalance = 973.17;
function calculateTax( amt ){
amt = amt + (amt * TAX_RATE);
return amt;
}
function remBalance( bal , total ){
bal = (bal - total);
return bal;
}

while( totalPurchase < accountBalance ){
totalPurchase = totalPurchase + PHONE_PRICE;
numberPhones++;
if( PHONE_PRICE < SPENDING_THRESHOLD ){
totalPurchase = totalPurchase + ACCESSORY_PRICE;
numberAccessories++;
}
}
console.log("Your total purchase before taxes is: " +totalPurchase);
totalPurchase = calculateTax(totalPurchase);
console.log( "Your total purchase after taxes is: " + totalPurchase );
accountBalance = remBalance( accountBalance , totalPurchase);
console.log("Your remaining account balance is: " + accountBalance);