Js中有幾種傳參方式

大家好,我是IT修真院上海分院第1期的Web學員劉洪利,今天給大家分享一下關于Js中有幾種傳參方式


1.背景介紹

????????所有函數(shù)的參數(shù)都是按值傳遞的,也就是說把函數(shù)外部的值復制給函數(shù)內(nèi)部的參數(shù)唇敞,就和把值從一個變量復制到另一個變量一樣。對于基本類型來說,其復制的是被復制變量在棧中的值,即創(chuàng)建了一個副本甥啄,對其中任何一個變量的改變都不會影響另外一個變量。

????????對于引用類型來說炬搭,其復制的是被復制變量在棧中的值蜈漓,但是這個值所存儲的是變量指向到堆中的對象的指針,即該對象所存儲的地址尚蝌,復制后的變量雖然也是一個副本迎变,但是卻指向了與被復制的變量的同一個在堆中的對象。對其中任何一個變量所做的改變都會影響都會影響另外一個變量飘言。????


2.知識剖析

常見的傳參方式

1. localStorage、sessionStorage

????????1.1. localStorage方法:

????????在HTML5中驼侠,新加入了一個localStorage特性姿鸿,這個特性主要是用來作為本地存儲來使用的谆吴,解決了cookie存儲空間不足的問題(cookie中每條cookie的存儲空間為4k),localStorage中一般瀏覽器支持的是5M大小苛预,這個在不同的瀏覽器中l(wèi)ocalStorage會有所不同句狼。不過儲存在localStorage方法中的數(shù)據(jù)會遵循一條規(guī)則,數(shù)據(jù)保留到通過Javascript刪除或者用戶清楚瀏覽器緩存热某。

????????1.2. sessionStorage方法:

????????與localStorage基本相同腻菇,但是sessionStorage只是儲存特定于某個會話的數(shù)據(jù),也就是該數(shù)據(jù)只會保持到瀏覽器關閉昔馋。當瀏覽器關閉時筹吐,sessionStorage所儲存的數(shù)據(jù)會隨關閉瀏覽器一起消失。

????????這兩種方法同時都屬于是storage類型秘遏,因此擁有與storage類型相同的使用方法:

????????????????clear(): 刪除所有值

????????????????getItem(): 根據(jù)指定的名字name獲取相應的值

????????????????key(index): 獲得index位置處的值的名字

????????????????removeItem(name): 刪除由name指定的名值對兒

????????????????setItem(name, value): 為指定的name設置一個對應的值

????????值得注意的是丘薛,storage類型只能儲存字符串,非字符串的數(shù)據(jù)在存儲之前會被轉(zhuǎn)換成字符串

2. 用cookie傳遞參數(shù)

Cookie 是什么

????????Cookie是當你瀏覽某網(wǎng)站時,網(wǎng)站存儲在你機器上的一個小文本文件邦危,它記錄了你的用戶ID洋侨,密碼、瀏覽過的網(wǎng)頁倦蚪、停留的時間等信息希坚,當你再次來到該網(wǎng)站時,網(wǎng)站通過讀取Cookie陵且,得知你的相關信息吏够,就可以做出相應的動作,如在頁面顯示歡迎你的標語滩报,或者讓你不用輸入ID锅知、密碼就直接登錄等等

????????Cookie 一般有兩個作用。

????????????????第一個作用是識別用戶身份脓钾。

????????比如用戶A用瀏覽器訪問了http://a.com售睹,那么http://a.com的服務器就會立刻給A返回一段數(shù)據(jù)[uid=1](這就是 Cookie)。當A再次訪問http://a.com的其他頁面時可训,就會附帶上[uid=1]這段數(shù)據(jù)昌妹。

????????同理,用戶B用瀏覽器訪問http://a.com時握截,http://a.com發(fā)現(xiàn)B沒有附帶 uid 數(shù)據(jù)飞崖,就給B分配了一個新的 uid,為2谨胞,然后返回給B一段數(shù)據(jù)[uid=2]固歪。B 之后訪問http://a.com的時候,就會一直帶上[uid=2]這段數(shù)據(jù)。借此牢裳,http://a.com的服務器就能區(qū)分A和B兩個用戶了逢防。

????????????????第二個作用是記錄歷史。

????????假設http://a.com是一個購物網(wǎng)站蒲讯,當A在上面將商品 A1 忘朝、A2 加入購物車時,JS 可以改寫 Cookie判帮,改為[uid=1; cart=A1,A2]局嘁,表示購物車里有 A1 和 A2 兩樣商品了。

????????這樣一來晦墙,當用戶關閉網(wǎng)頁悦昵,過三天再打開網(wǎng)頁的時候,依然可以看到 A1偎痛、A2 躺在購物車里旱捧,因為瀏覽器并不會無緣無故地刪除這個 Cookie。借此踩麦,就達到里記錄用戶操作歷史的目的了枚赡。

????????cookie的特點。

????????1.cookie可以使用 js 在瀏覽器直接設置(用于記錄不敏感信息谓谦,如用戶名), 也可以在服務端通使用 HTTP 協(xié)議規(guī)定的 set-cookie 來讓瀏覽器種下cookie贫橙,這是最常見的做法。

????????2.每次網(wǎng)絡請求 Request headers 中都會帶上cookie反粥。所以如果 cookie 太多太大對傳輸效率會有影響卢肃。

????????3.一般瀏覽器存儲cookie 最大容量為4k,所以大量數(shù)據(jù)不要存到cookie才顿。


3. 常見問題

還有什么其他傳遞參數(shù)的方式莫湘?


4.解決方案

????????url傳參

????????通過把參數(shù)值附在url后面?zhèn)鬟f到其他頁面

????如:http://xxx.com/login.html?mobile=123&pwd=abc

????????其中“mobile=123”和“pwd=abc”就是我們傳遞的參數(shù)名稱和值。

????????url和參數(shù)之間用"?"隔開多個參數(shù)之間用"&"符號連接郑气。

????URL地址傳遞參數(shù)的幾個特點:

優(yōu)點:

????????1. URL地址法簡潔易用幅垮,可同時傳遞多個字符型參數(shù);

????????2. URL地址法可以很方便的在頁面之間切換并傳遞參數(shù)尾组,無需額外的處理忙芒,基于正常情況比較不會性能損失;

缺點:

????????3. URL傳遞參數(shù)長度受限讳侨,最大為2K呵萨;

????????4. URL只能傳遞字符型參數(shù),傳遞中文時跨跨,由于發(fā)送頁面和接收頁面的字符編碼方式不一樣而導致參數(shù)解析處理錯誤潮峦,參數(shù)包含中文時可能出現(xiàn)亂碼或者參數(shù)接收錯誤;

????????5. 信息泄露:URL地址在客戶端可見,所以涉及隱私的參數(shù)需進行加密后才能進行傳遞跑杭,不加密傳輸會導致信息泄露铆帽,產(chǎn)生安全隱患咆耿。


5.參考文獻

參考一:

菜鳥教程---HTML5 Web 存儲

參考二:

「每日一題」簡述 Cookie 是什么

參考三:

「每日一題」cookie德谅、session、localStorage分別是什么萨螺?有什么作用窄做?

參考四:

Web頁面通過URL地址傳遞參數(shù)常見問題及檢測方法


鳴謝

感謝大家觀看

分享人:劉洪利

視頻鏈接 密碼:bmiw


IT修真院上海Web第1期學員劉洪利: 邀請碼14898047

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市慰技,隨后出現(xiàn)的幾起案子椭盏,更是在濱河造成了極大的恐慌,老刑警劉巖吻商,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掏颊,死亡現(xiàn)場離奇詭異,居然都是意外死亡艾帐,警方通過查閱死者的電腦和手機乌叶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柒爸,“玉大人准浴,你說我怎么就攤上這事∩又桑” “怎么了乐横?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長今野。 經(jīng)常有香客問我葡公,道長,這世上最難降的妖魔是什么条霜? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任催什,我火速辦了婚禮,結(jié)果婚禮上蛔外,老公的妹妹穿的比我還像新娘蛆楞。我一直安慰自己,他們只是感情好夹厌,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布豹爹。 她就那樣靜靜地躺著,像睡著了一般矛纹。 火紅的嫁衣襯著肌膚如雪臂聋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音孩等,去河邊找鬼艾君。 笑死,一個胖子當著我的面吹牛肄方,可吹牛的內(nèi)容都是我干的冰垄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼权她,長吁一口氣:“原來是場噩夢啊……” “哼虹茶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起隅要,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蝴罪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后步清,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體要门,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年廓啊,在試婚紗的時候發(fā)現(xiàn)自己被綠了欢搜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡崖瞭,死狀恐怖狂巢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情书聚,我是刑警寧澤唧领,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站雌续,受9級特大地震影響斩个,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驯杜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一受啥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鸽心,春花似錦滚局、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至糯景,卻和暖如春嘁圈,著一層夾襖步出監(jiān)牢的瞬間省骂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工最住, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钞澳,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓涨缚,卻偏偏與公主長得像轧粟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仗岖,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 大家好轧拄,我是IT修真院深圳分院第01期學員,一枚正直善良的web程序員讽膏。 今天給大家分享一下檩电,修真院官網(wǎng) JS任務...
    長天_閱讀 7,446評論 0 5
  • 1.背景介紹 《js高級程序設計》上這樣敘述參數(shù)傳遞:所有函數(shù)的參數(shù)都是按值傳遞的,也就是說把函數(shù)外部的值復制給函...
    遠望的云閱讀 604評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理俐末,服務發(fā)現(xiàn),斷路器奄侠,智...
    卡卡羅2017閱讀 134,633評論 18 139
  • 《裕語言》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 26,271評論 5 19
  • 回家已經(jīng)快3個月啦卓箫,竟然都沒有寫點什么,天哪垄潮,果然一回家就變成麻木的廢柴了烹卒。就這么短短幾個月時間我又換了個工作,又...
    MIGI6閱讀 167評論 0 0