为什么80%的码农都做不了架构师?>>>   

01执行顺序<script type="text/javascript">//执行顺序 fn1();/*不会报错,对于通过function fn()这种写法来定义的函数,永远都会被最先初始化*/function fn1(){alert("fn1");}//fn2();//使用如下方式定义函数,不会被先执行,如果在之前调用该函数就会报错 /*以下函数的定义方式是现在内存中创建了一块区域,之后通过一个fn2的变量*指向这块区域,这块区域的函数开始是没有名称的,这种函数就叫做匿名函数  */var fn2=function(){alert("fn2");}</script>
02closed-scope<script type="text/javascript">/*在JS中当进行函数的调用,会为每一个函数增加一个属性scope,*通过这个属性;来指向一块内存,这块内存中包含所有的上下文使用的变量当在某个函数中调用了新函数之后,新函数依然会有一个作用域来指向原有的函数的scope和自己新增加的scope,这样就形成一个链式结构,这就是js中的作用域链 */var color="red";var showColor=function(){alert(this.color);}function changeColor(){var anotherColor="blue";function swapColor(){var tempColor=anotherColor;anotherColor=color;color=tempColor;}swapColor();}changeColor();showColor();</script>
03clised-compare<script type="text/javascript">/*通过以下操作带来最大的好处是,compareFunction的作用域变大了 * 当compareFunction结束之后,prop这个变量依然存在 */function compareFunction(prop){//匿名函数 return function(obj1,obj2){if(obj1[prop]>obj2[prop]) return 1;else if(obj1[prop]<obj2[prop]) return -1;else return 0;}}var o1={name:"Leon",age:23};var o2={name:"Ada",age:28};/*此时就是基于name来进行比较* 在java或c++中,以下代码执行完成之后,需要进行内存的释放此时对于java或c++这些静态语言而言,prop会被释放 但是在js中,这个作用域却被放大了 */ var compare=compareFunction("age");/*此时就比较了o1和o2,在js中prop在这里依然可以被访问,*这种通过返回函数来扩大函数作用域的方法就是闭包  */var rel=compare(o1,o2);alert(rel);</script>
04clised-var<script type="text/javascript">function fn1(){/*创建一个数组*/var fns=new Array();for(var i=0;i<10;i++){/*num这个变量时保存在fns这个tf这个作用域,每一个闭包的num都不一样所有此时所消耗的内存特别大 */var tf=function(num){fns[num]=function(){return num;}}tf(i);/*数组中放的是一组函数,i这个变量是保存在fn1这个作用域中的*//* fns[i]=function(){return i;} */}return fns;}var fs=fn1();for(var i=0;i<fs.length;i++){/*此时通过闭包来调用所有函数,当输出i的时候会去上一级的作用域中查找这个时候i的值已经为10,所以连续输出10个10每一个fs都是在不同作用域链中,num也是保存在不同的作用域中,所以输出0-9*/document.write(fs[i]()+"<br>");}</script>
05closed-this<script type="text/javascript">var name="window";var person={name:"zhangsan",age:23,say:function(){return function(){return this.name;}}}/*当完成person.say()之后,这个函数就调用结束了,*在这个函数调用之前,this是指向person,但是在调用匿名函数的时候this就指向window,所以得到的结果是window*/alert(person.say()());</script>

转载于:https://my.oschina.net/686991/blog/363155

javascript12-object04-毕包相关推荐

  1. Linux常用命令全集

    Table Of Contents 1. Linux常用命令全集.CHM 9 1.1 备份压缩 9 1.1.1 ar 9 1.1.2 bunzip2 11 1.1.3 bzip2 12 1.1.4 b ...

  2. 投影转换_即插即用,办公投影不用愁:毕亚兹Mini DP转HDMIVGA转换器

    日常办公的时候一些办公小件也很有用的,就比如说HDMI,VGA的转接头,不起眼但是很实用.去客户那里汇报工作,笔记本没有VGA接口,结果会很尴尬,到处借,没有转接头就是接不了,所以索性还是自己入手一个 ...

  3. rhel6编译ssh的src.rpm包并修改spec参数

    安全扫描要求屏蔽ssh版本信息,也就是说在你ssh -V的时候,不能够显示ssh的版本信息,我之后在网上查找了一些资料,都说需要使用tar包安装ssh,并在解压之后修改sshd.c文件,将versio ...

  4. go语言复数包_Go语言中包的风格指南

    Go 语言也有自己的命名与代码组织规则.漂亮的代码,布局清晰.易读易懂,就像是设计严谨的 API 一样.拿到代码,用户首先看到和接触的就是布局.命名还有包的结构. 这篇文章不是为了给大家设立硬性的规定 ...

  5. python镜像下载包_python包详解

    干货大礼包!21天带你轻松学Python(文末领取更多福利) 点击查看课程视频地址 本课程来自于千锋教育在阿里云开发者社区学习中心上线课程<Python入门2020最新大课>,主讲人姜伟. ...

  6. zuk z2 Android7.0官方,首发ZUK Z2官方固件ZUI2.5安卓7.0卡刷包!

    原标题:首发ZUK Z2官方固件ZUI2.5安卓7.0卡刷包! ☆基于版本:官方固件ZUI 2.5 ☆适用机型:ZUK Z2/Z2131 ☆反馈Q 群:群号:414088773 ☆制作作者:殇夜丶 ☆ ...

  7. Golang函数,包笔记

    一.函数 函数的基本概念 为完成某一功能的程序指令(语句)的集合,称为函数. 在 Go 中,函数分为: 自定义函数.系统函数(查看 Go 编程手册) 函数的基本语法 快速入门案例 二.包 为什么需要包 ...

  8. 判断端口是否能用_扫描器篇(八)之python+scapy构造TCP协议包扫描主机端口

    TCP协议端口扫描 要使用TCP协议去完成端口扫描,肯定是需要了解TCP协议通信过程和原理才能完成的 TCP协议的特点 1 面向连接的:使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写, ...

  9. 【报告分享】迈向万亿市场的直播电商-毕马威+阿里研究院.pdf(附下载链接)...

    大家好,我是文文(微信:sscbg2020),今天给大家分享毕马威和阿里研究院于2020年10月份联合发布的报告<迈向万亿市场的直播电商-毕马威+阿里研究院.pdf>. 2020年的新冠疫 ...

  10. 【报告分享】人工智能在五大行业的成就与挑战-毕马威.pdf(附下载链接)

    大家好,我是文文(微信:sscbg2020),今天给大家分享毕马威中国于2020年9月份发布的报告<人工智能无处不在:人工智能在五大行业的成就与挑战.pdf>,也欢迎大家扫码加入省时查报告 ...

最新文章

  1. android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》
  2. 使用wide和buildbox构建完全在线的开发集成环境
  3. HttpServletRequest应用(转)
  4. 根据API创建BOM(Itpub)
  5. async spring 默认线程池_springboot-@Async默认线程池导致OOM问题
  6. r语言和python-r语言和python的详细对比
  7. gcnew 与 new 的区别
  8. C#实现Access导入导出Excel
  9. win8 iis8 asp.net 图片访问需登录
  10. 关于F5 排错的简单介绍之一
  11. CF508D Tanya and Password(欧拉回路)
  12. 地平线机器人_地平线机器人CEO余凯:基于深度学习的自动驾驶之路
  13. 货币系统(信息学奥数一本通-T12973)
  14. Socket中常见的几个转换函数(htonl,htons,ntohl,ntohs,inet_addr,inet_ntoa)
  15. Kerberos安装及拖管Ambari 2.7
  16. 嵌入式硬件:电子元器件(1)电阻电容电感
  17. 一次性补助20万,博士买房比市价低1.5万/平!26城硕博引进政策哪家强?
  18. 教你识别120多个车牌
  19. 第1章 微处理器、微型计算机、微型计算机系统的区别
  20. AutoCAD 04,07,08,11,14,16,18不同版本的选择建议

热门文章

  1. 如何使用自定义端口运行 Flutter Web
  2. 写作—开启技术成长之路
  3. 深入浅出:移动端(Android 和 iOS)数据采集埋点 SDK
  4. 推你所想,神策智能推荐 Demo 上线(可免费体验)
  5. CSDP是个好东西——CSDP 认证考试简介
  6. 本地突破XP系统权限
  7. 教你用java统计目录下所有文档的词频
  8. Keepalived+HAProxy基于读写分离方式实现discuz论坛
  9. Spark 1.1.1 Programing Guide
  10. 通过APNIC获取各运营商IP网段