为什么会赢't接收返回值

Why this won't receive return value?

本文关键字:返回值 为什么      更新时间:2023-09-26

我的HTML代码中有这个

<script type="text/javascript">
    var URL = replace(); 
    alert(URL);
</script>

如果我把这个放在标题中,就会显示警报"http://example.com/result"

function replace() { 
 url = 'http://example.com'; 
 $.get(url, function(data){ 
  var url_gen = data.responseText; 
 }); 
 return “http://example.com/result"; 
} 

但如果我像这样使用return,它不会有任何作用。为什么?

function replace() { 
 url = 'http://example.com'; 
 $.get(url, function(data){ 
  var url_gen = data.responseText; 
 }); 
 return url_gen; 
} 

只是为了确保,如果我在前面插入警报(url_gen),返回url_gen在第二个代码中,警报显示'http://example.com'所以url_gen中有一个实际值!

注意:这里,假设url_gen是从网页中抓取的字符串。

将url_gen设置为全局,如下所示:

function replace() { 
url = 'http://example.com'; 
var url_gen ='';
$.get(url, function(data){ 
url_gen = data.responseText; 
}); 
return url_gen; 
} 

因为1)url_gen只在$.get()中定义,不能在外部访问;2) $.get()是异步的。

解决方法:直接从$.get():返回

function replace() { 
 url = 'http://example.com'; 
 $.get(url, function(data){ 
   var url_gen = data.responseText; 
    return url_gen;
 }); 
  
}