控制console.log以获取不返回的功能

时间:2019-01-29 12:10:54

标签: javascript node.js

我想知道如何直接调用没有返回值的函数并通过console.log调用它。

我了解到,没有返回值的函数对console.log的控制不同。

但是我不知道这意味着什么。

我已经在下面编写了示例代码,想知道输出值和未定义。

测试代码

> var bark = function() { return 1; };
undefined
> bark();
1
> console.log(bark());
1
undefined
> var bark2 = function() { console.log('a'); };
undefined
> bark2()
a
undefined
> console.log(bark2());
a
undefined
undefined
>

3 个答案:

答案 0 :(得分:2)

我确信这里的混乱是显影剂控制台的人工制品,下列因素的组合:

  • 控制台显示从在同一个地方的每个函数的返回值,它显示的输出console.log()
  • 当一个函数没有返回值时,它将返回undefined
  • console.log是不具有返回值的函数

因此,简单的语句console.log(1)最终在控制台中显示了这一点:

> 1
> undefined

“ 1”是console.log语句的输出。 “未定义”是console.log()函数的返回值。 (某些浏览器以略微不同的颜色或带有微小图标的方式显示它们,以帮助您区分输出值和返回值,但将二者混淆起来很细微且容易。)

所以要查看示例输出:

> var bark = function() { return 1; };
undefined    // <-- return value from defining the function
> bark();    
1            // <-- return value from bark()
> console.log(bark());
1            // <-- return value from bark()
undefined    // <-- return value from console.log()
> var bark2 = function() { console.log('a'); };
undefined    // <-- return value from defining bark2
> bark2()
a            // <-- output of console.log
undefined    // <-- return value of bark2()
> console.log(bark2());
a            // <-- output of console.log inside bark2
undefined    // <-- return value of bark2
undefined    // <-- return value of the console.log wrapping bark2

答案 1 :(得分:1)

var bark = function() { return 1; };
bark();

上面的函数返回1。console.log并看到:

var bark = function() { return 1; };   
console.log(bark());

var bark2 = function() { console.log('a'); };
bark2();
console.log(bark2());

当调用function时,它会通过自己的a打印console.log,但是当function callprinted时,我们得到< strong> undefined ,因为console.log将从print中获取returned的值functionundefined因为{{1} }不包含任何function语句。

答案 2 :(得分:1)

看看下面的答案:

  

如果您是从JS文件运行console.log(),则不应添加未定义的行。

     

如果您从控制台本身运行console.log(),那么这很有意义。这是为什么:在控制台中,您可以键入变量的名称(例如,尝试键入window),并打印有关该变量的信息。当您从控制台运行任何void函数(例如console.log)时,它还会打印出有关返回值的信息(在这种情况下为未定义)。

     -https://stackoverflow.com/a/14634066/10984479

无效函数表示不返回任何内容的函数。

为便于调试,控制台会显示所有函数/表达式的输出。 console.log()返回未定义,因此显示为未定义。

在这里运行bark函数,该函数返回1,因此输出1:

> bark();
1

在这里运行bark函数,该函数返回1,因此其输出为1。Console.log不返回任何内容,因此其日志未定义:

> console.log(bark());
1
undefined