2017-07-16 155 views
-1

1 - 如何從外部調用inside()函數?函數內函數內聲明

2 - 創建這樣一個結構的慣例是?

3 - thisinside()函數中的值是多少(如果可以從外部調用)?

var obj = { 
     method: function(){ 
      console.log('method function called!'); 
      function inside(){ 
       console.log('inside function called!') 
       } 
      } 
    } 
+2

1)否2)是3)[作爲總是](HTTPS://顯影劑.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this)取決於它是如何調用的 – Bergi

+0

請詳細解釋一下,如果不可能調用inside()函數(1) ,爲什麼這是常見的做法(2)?這取決於什麼? –

+1

如果不可能從外部調用它,那並不能從'method'內部調用 - 這常常非常有用。關於'this',請參閱鏈接的文檔 – Bergi

回答

2
  1. 我怎麼能說裏面從外部()函數? - >不,JavaScript有 塊級作用域,因此在函數內定義的任何內容都不會被 訪問到。它可以被稱爲私人的 功能。
  2. 創建這樣的結構是否常見? - >是的。如果你 希望你的函數在執行的其他部分被隱藏 循環。
  3. 這個在inside()函數中的值是多少(如果是 可以從外部調用)? - >值this取決於如何調用 函數。在您的情況下,這將是window如果 function被不帶任何上下文因此global(window) context

var obj = { 
 
    method: function() { 
 
    console.log('method function called!'); 
 

 
    function inside() { 
 
     console.log(this); 
 
     console.log('inside function called!'); 
 
    } 
 
    inside(); 
 
    } 
 
} 
 

 
obj.method();