如何从全局范围访问函数中的变量?

时间:2014-08-22 09:43:26

标签: javascript variables global-variables

我无法从全局范围访问函数中的变量。通常我可以访问其他函数中的变量。

如何在全局范围内的以下代码中使用str变量?

 <html>
 <script>
 function myf(){
 str = "Change";
 document.write(str); 
 }
 document.write(str); // can not access str
 </script>
 <input type="button" value="OPEN" onclick="myf();">
 </html>

2 个答案:

答案 0 :(得分:1)

全局声明str以明确设置其范围。

var str;
function myf(){
  str = "Change";
  document.write(str); 
}
myf();
document.write(str); // can access str

请注意,如果不myf()str的值仍为undefined

通常,由于依赖性问题,您不想修改函数内的全局变量。考虑类似的事情:

function myf() {
  return "Change";
}
document.write(myf());

或者,如果您需要州:

function myf() {
  var state = "Change";
  return {
    get_state: function () {
      return state;
    },
    set_state: function () {
      //
    }
  }
}

var f = myf();
document.write(f.get_state());

答案 1 :(得分:0)

你的方式...除了你必须以正确的顺序运行代码。

目前你是:

  1. 定义(但未运行)设置str并将其写入文档的功能(删除流程中的现有文档)
  2. 尝试使用该变量
  3. 单击运行该功能的按钮并为变量赋值
  4. 你必须交换最后两个任务的顺序......并在函数内停止使用document.write

    在使用变量之前声明变量也是一种很好的做法(并且在JavaScript严格模式下是必需的)。您应该将var str放在脚本的顶部。