前面的話:JavaScript可運行在所有主要平臺的主流瀏覽器上,也可運行在每一個主流操作系統的伺服器端上。所以呢,要想成為一名優秀的全棧工程師,必須懂得JavaScript語言。這是我整理的JS的部分函數問題,供大家參考借閱,有不妥的地方也請多多指教。 1、函數的三要素 1.1 函數的功能 1.2 ...
前面的話:JavaScript可運行在所有主要平臺的主流瀏覽器上,也可運行在每一個主流操作系統的伺服器端上。所以呢,要想成為一名優秀的全棧工程師,必須懂得JavaScript語言。這是我整理的JS的部分函數問題,供大家參考借閱,有不妥的地方也請多多指教。
1、函數的三要素
1.1 函數的功能
1.2 函數的參數
1.3 函數的返回值——返回計算的結果
1)函數返回,後續的代碼不會執行 2)如果return後面跟內容了,就返回return後面的內容 3)如果return後面沒有跟內容,返回undefined,return後面的代碼不會執行 4)如果函數內部沒有寫返回值,返回undefined 5)推薦的作法是要麼讓函數始終都返回一個值,要麼永遠都不要返回值2、函數參數的註意點
function funName(a, b) { }
2.1 判斷輸入的參數是否為空(過濾掉undefined null NaN " " 0)
a = a || 0; b = b || 0;2.1 判斷輸入的參數是否為數字
3、函數的基本形式(4種)
——無參數無返回值 ——有參數無返回值 ——無參數有返回值 ——有參數有返回值4、/ * * +回車 對函數進行註釋,如下圖:
5、函數調用
5.1 一個函數內部調用另一個函數的執行過程: 當f2執行完畢之後,會返回到f1繼續執行後續的代碼;1 function f1() { 2 var a = 10; 3 f2(); 4 } 5 f1 (); 6 f1 ();
5.2 函數對自身的調用稱為遞歸【自調用函數】
——遞歸會消耗資源,當自身調用太多次仍會出現報錯。 5.3 函數是一種數據類型 function①函數可以作為另一種函數的參數(如5.1) ②函數可以作為函數的返回值
6、函數定義的兩種方式
6.1 函數聲明 function fn() { }
6.2 函數表達式 var myFun = function () {} //這裡調用的是匿名函數
6.3 函數聲明和函數表達式的區別:
7、變數的作用域
7.1 全局作用域:在任何位置都可以訪問【全局變數】
i)在script標簽中定義的變數 ii)不使用var聲明的變數 iii)在關閉網頁或瀏覽器,全局變數才會釋放7.2 局部作用域:在函數內部聲明一個變數,只能在該函數內部使用【局部變數】
i)只有在函數內部使用var定義的變數
ii)超出函數的作用範圍後,局部變數被銷毀7.3 javascript中沒有塊級作用域
i)塊級作用域:在其他語言中,在代碼塊中定義的變數,外部是訪問不到的; ii)if 和 for 中使用var定義的變數都是全局變數8、函數提升和變數提升(過程)
8.1 函數內部,獲取變數的時候,會先在當前作用域下找,有沒有變數聲明,如果有就返回當前作用域中變數的值
8.2 如果當前作用域中沒有對應變數的聲明,會返回上一級去找
1)解析器預解析的過程:
i,解析器
①全局作用域 預解析
a) var num ; b) function fun ()
②一行一行執行代碼
a) num = 10; b) fun (); 調用fun函數 i) fun的局部作用域 One. 預解析 First. var num; Two. 一行一行執行代碼 First. console.log(num); 輸出undefined Second. num = 20;
var num; function fun () { var num; console.log (num ); num = 20; } num = 10; fun();
var num = 10; fun(); function fun () { var num; console.log (num ); num = 20; } // 函數內部訪問外部變數 var a = 10; function fn () { console.log(a); }2)變數提升——定義變數的時候,變數的聲明會被提升到作用域的最上面,變數的賦值不會提升 3)函數提升——JavaScript解析器首先會把當前作用域的函數聲明提前到整個作用域的最前面
9、構造函數與自定義構造函數
9.1 構造函數:構造一個對象,並且返回的函數 ——調用構造函數: var student = new Object (); ① 構造函數的目的是用來創建對象 ② 使用new Object()創建對象 ③ 封裝函數創建多個對象 ④ 自定義構造函數9.2 自定義構造函數
① 記憶體開闢空間,存儲新創建的對象 new Object ();
② 會把this設置為當前對象
③ 執行函數內部的代碼,設置對象的屬性和方法
④ 返回新創建的對象