[英]Control of console.log for functions without return
我想知道如何直接调用没有返回值的函数并通过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
>
我敢肯定,这里的困惑是开发人员控制台的产物,它综合了以下因素:
console.log()
的输出的同一位置显示每个函数的返回值 undefined
console.log
是没有返回值的函数 因此,简单的语句console.log(1)
最终在控制台中显示了此语句:
> 1
> undefined
“ 1”是console.log语句的输出。 “ undefined”是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
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
call
时printed
我们得到undefined
,因为console.log
将print
的值returned
从function
是undefined
,因为function
不包含任何return
声明。
看下面的答案:
如果您是从JS文件运行console.log(),则不应添加此未定义的行。
如果您从控制台本身运行console.log(),那么这很有意义。 这是为什么:在控制台中,您可以键入变量的名称(例如,尝试键入window),并打印有关该变量的信息。 当您从控制台运行任何void函数(例如console.log)时,它还会打印出有关返回值的信息,这种情况下是未定义的。
-https://stackoverflow.com/a/14634066/10984479
无效函数表示不返回任何内容的函数。
为了便于调试,控制台会显示所有函数/表达式的输出。 console.log()
返回undefined,因此显示为undefined。
在这里,您将运行bark函数,该函数返回1,因此输出1:
> bark();
1
在这里,您将运行bark函数,该函数返回1,因此其输出为1。Console.log不返回任何内容,因此其日志未定义:
> console.log(bark());
1
undefined
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.