为什么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>

+0

:你的代码可以改写为? –

+0

您的代码中没有“else”声明,因此没有100%确定“s”将被覆盖。你确定在调用“Name()”之前设置了“randomsub”? –

你永远呼唤你的功能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"