2014-09-03 38 views
2

我已經搜查,但我不認爲任何人問過這個問題(「你好」):從本質上講,就是當您從函數返回JavaScript語句時會發生什麼,例如返回的console.log

function $(input){ 
    return console.log(input); 
} 

$("My message"); 

與更傳統的區別

function $(input){ 
    console.log(input); 
} 

$("My message"); 

?它們都具有相同的效果。

如果你能返回它,這是否意味着console.log("Hello")是一個對象?

+1

試試看並找出答案? 'console.log'(在Chrome中至少)返回'undefined',所以它和'return undefined'一樣。返回事物的行爲並不構成對象,也不暗示任何事物是對象。 – meagar 2014-09-03 17:28:01

+0

那麼爲什麼它工作? – user3457004 2014-09-03 17:30:08

+0

它的工作原理是javascript引擎不關心函數返回的內容。它是一種弱類型的語言,所以任何函數都可以返回任何東西,包括'null'或'undefined'值。如果你返回其中的一個,它會影響你的代碼,但你可以給任何變量賦值任何值。 – RevanProdigalKnight 2014-09-03 17:31:13

回答

0
function $(input) { 
    return console.log(input); 
} 

代表:

function $(input) { 
    var ret = console.log(input); 
    return ret; 
} 

此外,console.log(input)返回值是undefined,並返回一個undefined到調用對象。沒有任何反應,因爲你丟棄了$("My message");的返回值。實際上你可以使用返回值,如:

var ret = $("My message"); 
console.log(ret); 

它會在控制檯打印undefined

4

這與返回任何其他值沒有區別。

您返回的返回值爲console.log,它不返回任何內容。

如果你可以返回它,這是否意味着console.log(「你好」)是一個對象?

console.log("Hello")是函數調用。函數調用可能會顯式返回一個值。

沒有顯式返回值的函數隱式返回undefined,就像console.log()一樣。 (「你好」);

0

Console.log(「Hello」);返回undefined,只是做測試的一個javascript殼:

var s = $("hello"); 
console.log(s); 

這將打印第一你好,在CONSOLE.LOG代碼,然後不確定的:S值

你可以返回,因爲不確定是接受的返回值,因爲Console.log不是語句,而是函數

+0

什麼是'var s = ...'在那裏做什麼?你沒有記錄這些,你記錄的是字符串「s」,它與你剛創建的變量完全無關。 – meagar 2014-09-03 17:55:07

+0

@meagar確實,小錯誤,我糾正了,謝謝 – 2014-09-03 17:57:37

0

var test = $("Hello");會使test無論你的$函數返回。

console.log不返回任何內容,因此var test = console.log('hey');將使test的值變爲undefined

相關問題