如何在全局函数中使js var在外部使用?

时间:2018-10-01 12:09:49

标签: javascript

我想使函数中的“变量ID”成为全局变量。我可以在函数外部的警报中使用它的值。那就是我的代码:

<script>
function myFunctionGetCode() {
 
    
    
    var code = getInputVal('code'); //get value from Textinputfield from html
    var con = "/";
    var id = con+code;
    
}
     
      alert(id);
      
</script>

4 个答案:

答案 0 :(得分:1)

您没有指定最终目标是什么,或者为什么要尝试将id移到全局范围,但是您可以通过简单地将var id(声明)移到函数外部来实现,那么它将是全局的,并且所有功能都可以访问。

很明显,alert将显示"undefined",因为id仅在调用myFunctionGetCode()时才获得一些值。

下面的代码显示了这一点。

var id;
function myFunctionGetCode() { 
    var code = getInputVal('code'); //get value from Textinputfield from html
    var con = "/";
    id = con+code;    
    console.log(id)
}     
alert(id);

function getInputVal(elemId){
  return document.getElementById(elemId).value;
}
<input id="code"/>
<button onclick="myFunctionGetCode()">Get Id</button>

但是,如果仅当警报值达到某个值时才想将其与id一起引发警报,则应在函数内移动alert()。 (您仍然可以在函数外部声明id变量以使其全局或在函数内部进行声明,如您目前所拥有的那样)

打开摘要以查看:

//var id; -> You can still declare it here (as global)
function myFunctionGetCode() { 
    var code = getInputVal('code'); 
    var con = "/";
    var id = con+code;  //or you can declare it here, but not global  
    alert(id);
}     

function getInputVal(elemId){
  return document.getElementById(elemId).value;
}
<input id="code"/>
<button onclick="myFunctionGetCode()">Get Id</button>

答案 1 :(得分:1)

从您的示例代码中,我想您不想使全局值成为一个全局值,而是想要返回一个值-毕竟,您正在函数内部执行了一个操作,该操作从某些输入中计算出一个值。

因此,您将使用return关键字,并调用该函数以获取值:

<script>
function myFunctionGetCode() {
    var code = getInputVal('code'); //get value from Textinputfield from html
    var con = "/";
    var id = con+code;
    return id;
}

alert(myFunctionGetCode());

</script>

通常,您不想使函数变量成为全局变量,因为这意味着可以在脚本或网站中的任何位置更改该值,这可能会导致副作用和函数中的意外值。如果您需要传递使用中的功能参数(或从类似情况的文本输入中读取),则要返回结果,请使用return。

答案 2 :(得分:0)

您可以在函数内部移动警报还是从函数中返回“ id”值?

您可以通过执行以下操作使变量成为全局变量: window.your_namespace.id =值;

,然后以相同的方式访问变量: 值= window.your_namespace.id

,但最好不要使用全局名称空间传递数据。

答案 3 :(得分:0)

您必须将var id设置为窗口对象的属性,然后才能在函数外部访问id。

function myFunctionGetCode() {
  var code = getInputVal('code'); //get value from Textinputfield from html
  var con = "/";
  window.id = 10;// Change to this

}
myFunctionGetCode();
alert(id);