javascript - 带返回的调用函数只返回不带参数

时间:2015-06-10 19:40:33

标签: javascript

使用return返回调用函数只返回不带参数的字符串。它只输出"嗨,我是"我在这里失踪了什么。我搜查了一下......

var string = function nameString(name) {
return "Hi, I am" + " " +name;
};
string("casey");
console.log(nameString(name));

我也是这样写的。

function nameString(name){
return "Hi, I am" + " " + name ;
};
nameString("casey");
console.log(nameString(name));

4 个答案:

答案 0 :(得分:2)

在函数外的范围中,变量' name'未定义。您必须首先定义变量,而不是将其作为参数传递给函数。这样:

function nameString(name){
return "Hi, I am" + " " + name ;
};

var name = "casey";
console.log(nameString(name));

如果你没有太多经验,我建议避免名称冲突以避免混淆,所以最好这样做:

function nameString(name){
return "Hi, I am" + " " + name ;
};

var exernalName= "casey";
console.log(nameString(externalName));

答案 1 :(得分:2)

您没有使用已定义的参数调用它,因此它不会执行任何操作。

打破你的榜样:

var string = function nameString(name) { // Declares a function nameString and assigns it to string
  return "Hi, I am" + " " +name;
};
string("casey"); // Calls string with name:"casey" but discards the return value
console.log(nameString(name)); // Calls nameString with the undefined global variable name

这不起作用,因为你最终返回"Hi, I am " + undefined

您可能想要做的是调用nameString然后保存返回值,该值写为:

function nameString(name) {
  return "Hi, I am" + " " +name;
};
var string = nameString("casey");
console.log(string );

答案 2 :(得分:1)

你的语法有点偏。



var string = function nameString(name) {
  return "Hi, I am" + " " + name;
};

alert(string("casey"));




答案 3 :(得分:1)

你的函数应该是函数表达式或函数声明,所以:

var string = namestring() {}; // function expression

function nameString(name) {}; // function declaration

你的第一个是两者,这就是为什么它不起作用。要解决它,你应该这样做:

function nameString(name) {
return "Hi, I am" + " " +name;
};

console.log(nameString("casey"));

此外,我认为你在第一次尝试中的目的是这样的:

function nameString(name) {
  return "Hi, I am" + " " + name;
};

var string = nameString("casey"); // save this value to a var to use later

console.log(string); // use the "string" variable