有人会回答我一个小问题,我根本就不明白;为什么这个函数的输出是未定义的?我期望得到“奶酪高手”。一个简单的答案对我理解JS基础知识非常有帮助。
render
答案 0 :(得分:5)
因为您需要调用该函数。
var x = "cheese ";
var y = "whiz";
function cheeseWhiz (x, y) {
console.log (x+y);
}
cheeseWhiz(x, y);

此外, 可能在控制台中运行代码,该代码打印最后一个表达式/语句的结果。因为最后一个表达式是函数声明,所以没有返回结果,因此控制台产生undefined。
@ Felix Kling在这个答案中添加了缺失的部分。
调用cheeseWhiz(x,y);也将"输出" undefined因为函数没有返回任何内容,控制台会打印最后一个表达式/语句的值。
答案 1 :(得分:2)
如果您正在调用此功能并想知道为什么回复Application.Run "Module_name_" & Left(shn, 1)
是因为它实际上并不是undefined
任何内容,而只是return
s。
console.log
答案 2 :(得分:0)
您必须调用函数,它不会像cheeseWhiz (x,y);
答案 3 :(得分:0)
您获得undefined
的原因是因为您正在定义一项功能,但您实际上并未对其进行调用。
更改为:
function cheeseWhiz (x, y){
console.log (x + y);
}
cheeseWhiz("cheese ", "whiz");
答案 4 :(得分:0)
您没有调用此功能。试试这个:
var x = "cheese ";
var y = "whiz";
function cheeseWhiz (x,y){
console.log (x+y);
}
cheeseWhiz(x,y);
答案 5 :(得分:0)
x&你的cheezeWhiz函数中的y参数创建了本地范围的变量。
var x = "cheese ";
var y = "whiz";
function cheeseWhiz (x,y){ //creates new x,y variables in local scope
console.log (x+y);
}
function cheeseWhiz2 (){
console.log (x+y); //will move to outer scope to find x & y variables
}
cheezeWhiz(x,y) // this passes in the outer x & y. will log 'cheezewhiz'
cheezeWhiz('peanut','butter') // this will log 'peanutbutter'
cheezeWhiz2() // gets outer x & y. will log 'cheezewhiz'
cheezeWhiz2('peanut','butter') // also gets outer x & y. will log 'cheezewhiz'
这里的JavaScript范围http://ryanmorr.com/understanding-scope-and-context-in-javascript/
很好答案 6 :(得分:0)
OP正在使用REPL.IT,如果他们不将该函数输出重定向到变量,它看起来总是输出 last 函数调用返回的内容
所以即使我正在调用一个函数三次,右边的控制台显示最后一个没有保存输出的函数的输出。
在OP的情况下,他们实际上从不调用他们的函数,所以它显示undefined
作为最后一个函数调用的最后一个返回值(也就是来自任何东西)。
即使他们确实运行了cheeseWhiz
,他们也会看到console.log
值,但他们仍然会看到undefined
的返回值。
所以回答原来的问题,假设"输出"意味着"返回值," cheeseWhiz
函数的返回值为undefined
,因为它永远不会返回任何内容!
如果您希望返回某些内容,以便稍后可以使用该值,则您需要使用return
语句,而不是仅仅将字符串输出到控制台
var x = "cheese ";
var y = "whiz";
function cheeseWhiz(x, y) {
return x + y;
}
var result = cheeseWhiz(x, y);
// Do whatever you want with `result`, like output to the console
console.log(result);