我无法从全局范围访问函数中的变量。通常我可以访问其他函数中的变量。
如何在全局范围内的以下代码中使用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>
答案 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)
你的方式...除了你必须以正确的顺序运行代码。
目前你是:
str
并将其写入文档的功能(删除流程中的现有文档)你必须交换最后两个任务的顺序......并在函数内停止使用document.write
。
在使用变量之前声明变量也是一种很好的做法(并且在JavaScript严格模式下是必需的)。您应该将var str
放在脚本的顶部。