首先 session 和 cookie 用於瀏覽器客戶端與服務端數據交互,經過會話的方式跟蹤瀏覽器用戶身份。html
(1)、通常由服務器生成,能夠設置失效時間,若是是瀏覽器生成則默認瀏覽器關閉後失效;html5
(2)、與服務器端通訊,每次請求都放在 http 請求頭中;web
(3)、數據存儲在內存中,數據大小爲4KB,保存在類型爲字符串;api
session和cookie的做用有點相似,都是爲了存儲用戶相關的信息。不一樣的是,cookie是存儲在本地瀏覽器,而session存儲在服務器。存儲在服務器的數據會更加的安全,不容易被竊取。但存儲在服務器也有必定的弊端,就是會佔用服務器的資源,但如今服務器已經發展至今,一些session信息仍是綽綽有餘的。瀏覽器
web開發發展至今,cookie和session的使用已經出現了一些很是成熟的方案。在現在的市場或者企業裏,通常有兩種存儲方式:安全
1)、存儲在服務端:經過cookie存儲一個session_id,而後具體的數據則是保存在session中。若是用戶已經登陸,則服務器會在cookie中保存一個session_id,下次再次請求的時候,會把該session_id攜帶上來,服務器根據session_id在session庫中獲取用戶的session數據。就能知道該用戶究竟是誰,以及以前保存的一些狀態信息。這種專業術語叫作server side session。服務器
2)、將session數據加密,而後存儲在cookie中。這種專業術語叫作client side session。
cookie
localStorage的生命週期是永久的,關閉頁面或瀏覽器以後localStorage中的數據也不會消失。localStorage除非主動刪除數據,不然數據永遠不會消失。
sessionStorage的生命週期是在僅在當前會話下有效。sessionStorage引入了一個「瀏覽器窗口」的概念,sessionStorage是在同源的窗口中始終存在的數據。只要這個瀏覽器窗口沒有關閉,即便刷新頁面或者進入同源另外一個頁面,數據依然存在。可是sessionStorage在關閉了瀏覽器窗口後就會被銷燬。同時獨立的打開同一個窗口同一個頁面,sessionStorage也是不同的。網絡
localStorage和sessionStorage的存儲數據大小通常都是:5MBsession
localStorage和sessionStorage都保存在客戶端,不與服務器進行交互通訊。
localStorage和sessionStorage只能存儲字符串類型,對於複雜的對象可使用ECMAScript提供的JSON對象的stringify和parse來處理
WebStorage因爲不會傳送到服務器,因此更安全,也能節省網絡流量,存儲數據也比cookie要大,存儲在本地也使得讀取數據更快,由於存在僞造問題,不建議存儲敏感信息
- var 和 let 用以聲明變量,const 用於聲明只讀的常量;
- var 聲明的變量,不存在塊級做用域,在全局範圍內都有效,let 和 const 聲明的,只在它所在的代碼塊內有效;
- let 和 const 不存在像 var 那樣的 「變量提高」 現象,因此 var 定義變量能夠先使用,後聲明,而 let 和 const 只可先聲明,後使用;
- let 聲明的變量存在暫時性死區,即只要塊級做用域中存在 let,那麼它所聲明的變量就綁定了這個區域,再也不受外部的影響;
- let 不容許在相同做用域內,重複聲明同一個變量;
- const 在聲明時必須初始化賦值,一旦聲明,其聲明的值就不容許改變,更不容許重複聲明;