为什么s不会被覆盖为全局变量?
问题描述:
randomsub是通过一个随机数生成的,未显示,是一个全局变量。这首歌没有歌名。 (可能是一个错误)正在显示和功能为什么s不会被覆盖为全局变量?
<script type="text/javascript">
var s = "No song name for this song. (May be an error)";
var l = randomsub;
function Name(){
if (l == 0){
s = "Tobu - Seven";
}
if (l == 1){
s = "Tobu - Colors";
}
if (l == 2){
s = "Tobu - Candyland";
}
if (l == 3){
s = "Tobu - Such Fun";
}
if (l == 4){
s = "Tobu - Dreams";
}
}
</script>
<font color="red"><p id="song"><p></font>
<script>
song = document.getElementById("song");
song.innerHTML = s;
</script>
答
你永远呼唤你的功能Name
不是由S =覆盖。
最后一行前添加Name();
和s
将被覆盖
<script>
song = document.getElementById("song");
Name();
song.innerHTML = s;
</script>
,当你需要像你必须做很多的if语句/开关case语句也只考虑使用对象为包含HashMap。你在哪里实际调用`名称()`函数
function Name() {
var names = {
0: "Tobu - Seven",
1: "Toby - Colors",
2: "Tobu - Candyland",
3: "Tobu - Such Fun",
4: "Tobu - Dreams"
}
if (l in names) {
s = names[l]
}
}
这样,它是非常容易的添加新的选项,如5: "Tobu - Horrors"
:你的代码可以改写为? –
您的代码中没有“else”声明,因此没有100%确定“s”将被覆盖。你确定在调用“Name()”之前设置了“randomsub”? –