Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有消息“的意外警报”;“未定义”;成功调用带有参数的简单函数后_Javascript - Fatal编程技术网

Javascript 带有消息“的意外警报”;“未定义”;成功调用带有参数的简单函数后

Javascript 带有消息“的意外警报”;“未定义”;成功调用带有参数的简单函数后,javascript,Javascript,有谁能告诉我为什么下面的代码会生成我期望的警报框(RyeTofuRye),但随后会生成第二个警报框,并显示消息“undefined?”至少在我的Windows7机器上的最新FireFox中是这样做的 function makeSandwich(bread, meat) { alert(bread + meat + bread); } var mySandwich = makeSandwich('Rye', 'Tofu'); alert(mySandwich); 因为您没有从makeSandwi

有谁能告诉我为什么下面的代码会生成我期望的警报框(RyeTofuRye),但随后会生成第二个警报框,并显示消息“undefined?”至少在我的Windows7机器上的最新FireFox中是这样做的

function makeSandwich(bread, meat) {
alert(bread + meat + bread);
}
var mySandwich = makeSandwich('Rye', 'Tofu');
alert(mySandwich);

因为您没有从
makeSandwich()
返回值,所以
mySandwich
未定义的

将其更改为:

function makeSandwich(bread, meat) {
return(bread + meat + bread);
}
var mySandwich = makeSandwich('Rye', 'Tofu');
alert(mySandwich);
function makeSandwich(bread, meat) {
    return(bread + meat + bread);
}

makeSandwich
不返回任何内容。将其更改为:

function makeSandwich(bread, meat) {
return(bread + meat + bread);
}
var mySandwich = makeSandwich('Rye', 'Tofu');
alert(mySandwich);
function makeSandwich(bread, meat) {
    return(bread + meat + bread);
}

由于您不返回任何内容,第二个警报未定义
流程如下:

function makeSandwich(bread, meat) {//step-3
    alert(bread + meat + bread); // alerting RyeTofuRy, step-4
    // am i returnign anything? nope!
    //adding a return (bread + meat + bread); resolves teh problem though
    }

var mySandwich = makeSandwich('Rye', 'Tofu');//start here step-1
alert(mySandwich);//step-2, step-5

谢谢,埃斯瓦尔!这是一个完美的解释。