[英]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.