为什么我会被定义?

时间:2016-12-16 14:48:27

标签: javascript

有人会回答我一个小问题,我根本就不明白;为什么这个函数的输出是未定义的?我期望得到“奶酪高手”。一个简单的答案对我理解JS基础知识非常有帮助。

render

enter image description here

7 个答案:

答案 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 函数调用返回的内容

示例1:

Hello World

示例2:

World

所以即使我正在调用一个函数三次,右边的控制台显示最后一个没有保存输出的函数的输出。

在OP的情况下,他们实际上从不调用他们的函数,所以它显示undefined作为最后一个函数调用的最后一个返回值(也就是来自任何东西)。

即使他们确实运行了cheeseWhiz,他们也会看到console.log值,但他们仍然会看到undefined的返回值。

示例3:

Cheese Whiz

所以回答原来的问题,假设"输出"意味着"返回值," 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);