簡體   English   中英

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

[英]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 callprinted我們得到undefined ,因為console.logprint的值returnedfunctionundefined ,因為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM