2021.1.8 - DBUtils - Tomcat - Servlet
阿新 • • 發佈:2021-01-08
基本資料型別(簡單):
null、undefined、boolean、string、number、Symbol
引用資料型別(複雜):
Object
堆和棧的理解:
為了更好的來闡述棧和堆,我們先來了解一下資料型別: 基本型別:String,Number,Boolean,Null,Undefined,這5種基本資料型別它們是直接按值存放的,所以可以直接訪問。 引用型別:Function,Array,Object,當我們需要訪問這三種引用型別的值時,首先得從棧中獲得該物件的地址指標,然後再從堆記憶體中取得所需的資料。 棧(stack):由作業系統自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧; 堆(heap):一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由OS回收,分配方式倒是類似於連結串列。
閉包:
1. 閉包是指有權訪問另一個函式作用域中的變數的函式,建立閉包的最常見的方式就是在一個函式內建立另一個函式,通過外部函式訪問這個函式的內部的變數。閉包的缺點就是常駐記憶體,會增大記憶體使用量,使用不當很容易造成記憶體洩露。 2. 不適合場景:返回閉包的函式是個非常大的函式。 閉包的典型框架應該就是jquery了。 閉包是javascript語言的一大特點,主要應用閉包場合主要是為了:設計私有的方法和變數。 這在做框架的時候體現更明顯,有些方法和屬性只是運算邏輯過程中的使用的,不想讓外部修改這些屬性,因此就可以設計一個閉包來只提供方法獲取。 3. 不必糾結到底怎樣才算閉包,其實你寫的每一個函式都算作閉包,即使是全域性函式,你訪問函式外部的全域性變數時,就是閉包的體現。
解構賦值:
解構賦值是什麼:解構賦值語法是一種 Javascript 表示式。通過解構賦值, 可以將屬性/值從物件/陣列中取出,賦值給其他變數。解構賦值 的特性很強大,它可以幫我們從一堆巢狀很深的物件屬性中,很方便地拿到我們想要的那一個 陣列的解構賦值: let a, b, rest; [a, b] = [10, 20]; console.log(a); // expected output: 10 console.log(b); // expected output: 20 [a, b, ...rest] = [10, 20, 30, 40, 50]; console.log(rest); // expected output: Array [30,40,50] 物件的解構賦值: ({ a, b } = { a: 10, b: 20 }); console.log(a); // 10 console.log(b); // 20 ({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}); console.log(a); // 10 console.log(b); // 20 console.log(rest); // {c: 30, d: 40} 常規用法: 使用解構賦值經常使用到預設值的賦值,和使用 function的預設引數一樣,使用 = 來新增屬性的預設值 let a, b; [a=5, b=7] = [1]; console.log(a); // 1 console.log(b); // 7 let {a = 10, b = 5} = {a: 3}; console.log(a); // 3 console.log(b); //
計時器:
setInterval() 每隔一段延遲時間,就會去呼叫回撥函式,會持續的去呼叫
setTimeout()是延遲時間到了之後,就回去回撥函式,只會呼叫1次,就結束這個定時器
setimmediate:在迴圈事件任務完成後馬上執行指定程式碼,和setTimeout差不多
預編譯:
1)建立AO物件(Activation Object)(執行上下文);
2)找函式形參和函式內變數宣告,將形參名和變數名作為AO物件的屬性名,值為undefined;
3)將實參值和形參統一,實參值賦給形參;
4)在函式體裡面找函式宣告,值賦予函式體。
this的指向問題
全域性作用域或者普通函式中this指向全域性物件window(注意定時器裡面的this指向window)
方法呼叫中誰呼叫this指向誰
建構函式中this指向建構函式的例項
call apply bind
call,apply 會自動執行函式,bind不會自動執行需要手動執行
call 方法 傳遞的引數是以引數列表的形式傳遞
apply 傳遞引數是以陣列的形式傳遞
遞迴:
1)宣告一個具名函式,通過函式名呼叫
2)使用arguments.callee代替函式名
3)使用函式表示式
嚴格模式:
嚴格模式,寫在哪個作用域下,在那個作用域生效(儘量不要全域性使用),使用後代碼更加規範、更合理、更安全、更嚴謹。
"use strict"
嚴格模式消除了js語法的一些不合理、不嚴謹之處、減少了怪異行為;消除了程式碼執行的不安全之處;提高編譯器效率,提高執行速度;為未來新版本js做好鋪墊
用了嚴格模式,程式碼的變化:
1.全域性變數 必須用var宣告變數
2.this無法指向全域性物件
3.函式內重名屬性(形參名字不能相同)
4.arguments不允許動態修改,在嚴格模式下,argument保證了它的本質功能(arguments只儲存在實際呼叫函式時實際傳入的引數)
5.新增保留字:impletents interface let package private protected public static yield