声明javascript变量不能在JS函数中工作

时间:2014-08-12 07:57:13

标签: javascript html function variables

代码如下:

 var name = 'test'; //declaring variable 

 function nameEcho(name) {
     var namephrase = "The saved name is, " + name; // adding the variable to a string
     alert(namephrase); // make a popup with the variable
 }

上面的代码在JS文件中。
当我通过HTML页面上的按钮触发该功能时,我会收到一条警告:The saved name is,

很抱歉,如果这是一个非常简单的问题,我是JS的新手,但必须要考虑一些问题。任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:2)

函数中的代码不使用外部的变量,因为您已使用函数参数隐藏了该变量:

var name = 'test'; //declaring variable 

function nameEcho(name) {
// Here ----------^
    var namephrase = "The saved name is, " + name;
    alert(namephrase);
}

该函数的name参数阻止函数frm能够使用在其外部声明的name变量。

选项:

  1. 将名称传递给函数,并可能为参数使用不同的名称。

    var name = 'test'; //declaring variable 
    
    function nameEcho(arg) {
        // You can use both `name` and `arg` here
        var namephrase = "The saved name is, " + name; // or `arg`
        alert(namephrase);
    }
    
  2. 如果要使用变量,请删除参数:

    var name = 'test'; //declaring variable 
    
    function nameEcho(/*...no `name` here...*/) {
        var namephrase = "The saved name is, " + name;
        alert(namephrase);
    }
    

答案 1 :(得分:0)

您使用name作为函数nameEcho的参数,因此当您在函数内部使用name时,它将使用参数而不是全局变量。

答案 2 :(得分:0)

在您的代码中,有一个名为name的局部变量作为参数。因此它将尝试访问局部变量的值。

像bellow

一样更改你的代码
var name = 'test'; //declaring variable 

 function nameEcho(arg) {
        var namephrase = "The saved name is, " + arg; // adding the variable to a string
        alert(namephrase); // make a popup with the variable
    }

答案 3 :(得分:0)

函数内部的参数不会接受在函数外声明的变量。

您需要在其调用中作为变量传递的参数。

var name = 'test'; //declaring variable 

 function nameEcho(n) {
        var namephrase = "The saved name is, " + n; // adding the variable to a string
        alert(namephrase); // make a popup with the variable
    }

现在,这样打电话:

nameEcho(name);//which will give you that variable test...

或者,如果您不关心参数并且只想使用该变量,那么在不传递如下所示的参数的情况下创建函数:

var name = 'test'; //declaring variable 

function nameEcho() {
 var namephrase = "The saved name is, " + name; // adding the variable to a string
 alert(namephrase); // make a popup with the variable
}

答案 4 :(得分:0)

您正在使用函数的参数覆盖name全局变量。

function nameEcho(name) {
     // here 'name' is a different (local) variable than the global
}

如果您打算像这样nameEcho('bob')调用函数,则不应在函数之外声明name