gpt4 book ai didi

Javascript 本地与全局

转载 作者:行者123 更新时间:2023-12-01 02:04:49 25 4
gpt4 key购买 nike

我以为我已经在脑子里解决了这个困惑的问题,但由于某种奇怪的原因它不起作用。

如果您在函数/作用域之外声明一个变量,并在函数内没有 var 的情况下引用它,那么它会更改之前声明的变量...对吗?

但是,第一个警报返回正确的价格,但第二个(最后一个)警报返回 0。我做错了什么?

//get pricing
var price=0;
var modelid = $("#model_input").val();
var inCode = $("#code_input").val();
$.get("getpricing.php", { 'modelid': modelid ,'code' : inCode }, function(data){
price = data;
alert(price);
});
alert(price);

最佳答案

您正在使用Ajax 请求。

那些,除非另有说明,是A同步的:它们在后台执行,不会停止脚本其余部分的执行。

因此,最后一行代码的alert会在Ajax请求完成之前执行;这意味着当时 price 仍然为 0。

改变这种情况的一种方法是使用同步请求(参见async option);但我强烈建议不要这么做;引用文档:

By default, all requests are sent asynchronous (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.

而且您绝对不希望您的应用程序卡住整个浏览器!

您应该重新考虑应用程序的设计方式,在这种情况下:您只能在 Ajax 请求完成后使用“价格”信息——这可能意味着您应该在其调用的函数中放置更多代码success :仅将代码放在 $.get 之后是不够的。

关于Javascript 本地与全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1276095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com