我想知道如何直接调用没有返回值的函数并通过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
>
答案 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
call
是printed
时,我们得到< strong> undefined
,因为console.log
将从print
中获取returned
的值function
,undefined
因为{{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