Js中有几种传参方式

大家好,我是IT修真院上海分院第1期的Web学员刘洪利,今天给大家分享一下关于Js中有几种传参方式


1.背景介绍

        所有函数的参数都是按值传递的,也就是说把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。对于基本类型来说,其复制的是被复制变量在栈中的值,即创建了一个副本,对其中任何一个变量的改变都不会影响另外一个变量。

        对于引用类型来说,其复制的是被复制变量在栈中的值,但是这个值所存储的是变量指向到堆中的对象的指针,即该对象所存储的地址,复制后的变量虽然也是一个副本,但是却指向了与被复制的变量的同一个在堆中的对象。对其中任何一个变量所做的改变都会影响都会影响另外一个变量。    


2.知识剖析

常见的传参方式

1. localStorage、sessionStorage

        1.1. localStorage方法:

        在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。不过储存在localStorage方法中的数据会遵循一条规则,数据保留到通过Javascript删除或者用户清楚浏览器缓存。

        1.2. sessionStorage方法:

        与localStorage基本相同,但是sessionStorage只是储存特定于某个会话的数据,也就是该数据只会保持到浏览器关闭。当浏览器关闭时,sessionStorage所储存的数据会随关闭浏览器一起消失。

        这两种方法同时都属于是storage类型,因此拥有与storage类型相同的使用方法:

                clear(): 删除所有值

                getItem(): 根据指定的名字name获取相应的值

                key(index): 获得index位置处的值的名字

                removeItem(name): 删除由name指定的名值对儿

                setItem(name, value): 为指定的name设置一个对应的值

        值得注意的是,storage类型只能储存字符串,非字符串的数据在存储之前会被转换成字符串

2. 用cookie传递参数

Cookie 是什么

        Cookie是当你浏览某网站时,网站存储在你机器上的一个小文本文件,它记录了你的用户ID,密码、浏览过的网页、停留的时间等信息,当你再次来到该网站时,网站通过读取Cookie,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等

        Cookie 一般有两个作用。

                第一个作用是识别用户身份。

        比如用户A用浏览器访问了http://a.com,那么http://a.com的服务器就会立刻给A返回一段数据[uid=1](这就是 Cookie)。当A再次访问http://a.com的其他页面时,就会附带上[uid=1]这段数据。

        同理,用户B用浏览器访问http://a.com时,http://a.com发现B没有附带 uid 数据,就给B分配了一个新的 uid,为2,然后返回给B一段数据[uid=2]。B 之后访问http://a.com的时候,就会一直带上[uid=2]这段数据。借此,http://a.com的服务器就能区分A和B两个用户了。

                第二个作用是记录历史。

        假设http://a.com是一个购物网站,当A在上面将商品 A1 、A2 加入购物车时,JS 可以改写 Cookie,改为[uid=1; cart=A1,A2],表示购物车里有 A1 和 A2 两样商品了。

        这样一来,当用户关闭网页,过三天再打开网页的时候,依然可以看到 A1、A2 躺在购物车里,因为浏览器并不会无缘无故地删除这个 Cookie。借此,就达到里记录用户操作历史的目的了。

        cookie的特点。

        1.cookie可以使用 js 在浏览器直接设置(用于记录不敏感信息,如用户名), 也可以在服务端通使用 HTTP 协议规定的 set-cookie 来让浏览器种下cookie,这是最常见的做法。

        2.每次网络请求 Request headers 中都会带上cookie。所以如果 cookie 太多太大对传输效率会有影响。

        3.一般浏览器存储cookie 最大容量为4k,所以大量数据不要存到cookie。


3. 常见问题

还有什么其他传递参数的方式?


4.解决方案

        url传参

        通过把参数值附在url后面传递到其他页面

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

        其中“mobile=123”和“pwd=abc”就是我们传递的参数名称和值。

        url和参数之间用"?"隔开多个参数之间用"&"符号连接。

    URL地址传递参数的几个特点:

优点:

        1. URL地址法简洁易用,可同时传递多个字符型参数;

        2. URL地址法可以很方便的在页面之间切换并传递参数,无需额外的处理,基于正常情况比较不会性能损失;

缺点:

        3. URL传递参数长度受限,最大为2K;

        4. URL只能传递字符型参数,传递中文时,由于发送页面和接收页面的字符编码方式不一样而导致参数解析处理错误,参数包含中文时可能出现乱码或者参数接收错误;

        5. 信息泄露:URL地址在客户端可见,所以涉及隐私的参数需进行加密后才能进行传递,不加密传输会导致信息泄露,产生安全隐患。


5.参考文献

参考一:

菜鸟教程---HTML5 Web 存储

参考二:

「每日一题」简述 Cookie 是什么

参考三:

「每日一题」cookie、session、localStorage分别是什么?有什么作用?

参考四:

Web页面通过URL地址传递参数常见问题及检测方法


鸣谢

感谢大家观看

分享人:刘洪利

视频链接 密码:bmiw


IT修真院上海Web第1期学员刘洪利: 邀请码14898047

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容

  • 大家好,我是IT修真院深圳分院第01期学员,一枚正直善良的web程序员。 今天给大家分享一下,修真院官网 JS任务...
    长天_阅读 7,447评论 0 5
  • 1.背景介绍 《js高级程序设计》上这样叙述参数传递:所有函数的参数都是按值传递的,也就是说把函数外部的值复制给函...
    远望的云阅读 604评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,642评论 18 139
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 26,369评论 5 19
  • 回家已经快3个月啦,竟然都没有写点什么,天哪,果然一回家就变成麻木的废柴了。就这么短短几个月时间我又换了个工作,又...
    MIGI6阅读 168评论 0 0