標籤:資料 通過 outer console style 內建函式 列印 注意事項 定義
內建函式,定義在另一個函數中的函數
function outer() { console.log("out"); function inner () { console.log("in"); } } outer(); // out inner(); // 報錯: inner is not defined
這裡的inner是一個定義在outer中的內建函式,它的範圍在函數outer內部,外部運行無效。
1.那麼如何在任何地方調用內建函式?
javascript允許像傳遞任何類型的資料一樣傳遞函數,也就是說,javascript中的內建函式能夠逃脫定義他們的外部函數。
① 給內建函式指定一個全域變數
var bgg; function outer() { console.log("out"); function inner () { console.log("in"); } bgg=inner; } outer(); // out bgg(); // in
② 通過在父函數中傳回值來實現對內建函式的引用( return )
function outer() { console.log(‘out‘); function inner() { console.log(‘in‘); } return inner; } var res = outer(); // out res(); // in outer(); //out
在這裡例子中,執行 out() ,只是運行這個函數,結果是什嗎?列印輸出 out ,把函數 inner 作為函數 out 的傳回值。 var res = out(),這句又在幹什嗎?
這樣子理解,等號會計算其右邊的運算式,並且把右邊運算式的值 賦值給等號左邊。out函數啟動並執行傳回值是 函數 inner ,所以下一步中,運行 res, 會列印出 in 。
function outer() { console.log("out"); return function inner() { console.log("in") } } outer()(); // out in
上面這個例子中是 執行函數 out ,並把 函數傳回值 inner 函數 返回給outer,out()(),這第二個括弧相當於自執行函數了。
注意事項:1.return 是在函數語句結束時執行,並返回運算式的值作為函數的結果
2.返回空值,文法:return;
一般來講,為事件處理函數返回return:false; ,作用在於阻止預設事件行為和取消預設動作,比如,在預設情況下點擊一個<a>元素,那麼頁面就會跳轉到元素href屬性指定的頁,那當你用return false;時,就相當於一個終止符,而return true;相當於一個執行符。
自己當時的一點誤解解決:當return一個運算式時,會把運算式的值作為函數的結果,而這個值我們是看不到的,只有列印輸出時我們才能看到這個函數的傳回值。函數的運行結果和傳回值並不是同一個“東西”。
javascript 內建函式的定義及調用