`

Javascript:猜猜弹出的是啥?为啥? - 幸福框架

阅读更多
原帖地址:http://www.cnblogs.com/happyframework/p/3160254.html

背景

经常需要向新入职的年轻同学解释Javascript的两个概念:单线程和作用域链,今天就再写篇博客说明一下。

单线程

  • 队列:只有一个用来存储回调方法的队列。
  • 消费线程:只有一个消费线程,不停的从队列中取方法,然后进行调用。这也是为什么Javascript称作为单线程的原因。
  • 生产线程:有多个生产线程,不同的向队列中插入方法,常见的生成线程有:定时器、Ajax和浏览器事件。这也是为什么Javascript称作为事件驱动的原因。

参考文章:http://www.cnblogs.com/happyframework/archive/2013/04/23/3035596.html

作用域链条

局部变量不是存储在“栈”中的,不要试着用传统的“栈”式作用域来理解。

参考文章:http://www.cnblogs.com/happyframework/archive/2013/04/22/3034087.html

示例

1 function sleep(millisecond){
2 var start = new Date();
3 while(new Date().getTime() - start.getTime() <= millisecond) {}
4 }
5
6 var a = 6;
7 setTimeout(function () {
8 alert(a);
9 a = 666;
10 }, 0);
11 sleep(5000);
12 a = 66;

这个例子的执行过程向队列里插入了2快代码:

第一块:sleep定义、局部变量a定义和赋值、setTimeout方法调用、sleep方法调用和a赋值。

第二块:setTimeout的第二个参数(匿名函数)的调用。

根据这个可以知道,匿名函数的执行是在a = 66之后执行的,结合作用域链的知识,可以知道弹出的结果是66。

备注

写的还不够清晰,基本上是QQ里聊天的内容,有些概念是我在网上找的,没有看Javascript规范,所以大家要慎重理解。

 


本文链接:http://www.cnblogs.com/happyframework/p/3160254.html,转载请注明。

分享到:
评论

相关推荐

    Javascript弹出框架

    Javascript弹出框架,功能相当不错

    基于Django框架的婚礼管理平台囍管家源码

    囍管家是我们与团队成员共同开发的婚礼管理平台,它基于Python的Django框架,致力于为用户提供一站式的婚礼筹备解决方案。该平台使用了前沿的前端技术,如JavaScript、CSS和HTML,确保了用户体验的流畅与界面设计的...

    基于JavaScript实现的lhgdialog DIV弹出窗口框架

    lhgdialog DIV弹出窗口框架,基于JavaScript,它与Alert弹出窗口有着本质的区别,lhgdialog DIV弹出窗口是JS+CSS结合打造的产物,界面非常漂亮,无刷新弹出窗口。

    16款最流行的JavaScript框架-开源中国社区.docx

    16款最流行的JavaScript框架-开源中国社区.docx16款最流行的JavaScript框架-开源中国社区.docx16款最流行的JavaScript框架-开源中国社区.docx16款最流行的JavaScript框架-开源中国社区.docx16款最流行的JavaScript...

    16款最流行的JavaScript框架-开源中国社区.pdf

    16款最流行的JavaScript框架-开源中国社区.pdf16款最流行的JavaScript框架-开源中国社区.pdf16款最流行的JavaScript框架-开源中国社区.pdf16款最流行的JavaScript框架-开源中国社区.pdf16款最流行的JavaScript框架-...

    JavaScript权威指南(第6版).JavaScript:The.Definitive.Guide

    中文名: JavaScript权威指南 (第6版) 原名: JavaScript: The Definitive Guide: Activate Your Web Pages, 6th edition 作者: David Flanagan 版本: 英文文字版-pdf/EPUB + 完整书中源代码 出版社: O'Reilly 书号: ...

    js弹出框 javascript弹出框 div+css弹出层效果 弹出登录框

    2.width height弹出框的长宽 默认500 300 3.scrolling弹出框是否有滚动条 可选值 auto no yes 默认auto 4.titleColor 弹出框title背景颜色 默认#7093DB 5.title 弹出框名称 6.弹出框url 7.弹出框是否可拖动 true or ...

    javaScript实现点击输入框弹出窗体选择信息源码

    javaScript实现点击输入框弹出窗体选择信息,提供源码,希望可以共同学习,不足处请指出,呵呵 -------javascript爱好者,java交流群:166256747,分享自己的技术是一种美德!

    基于SSM框架的彤筹网完整项目源码

    项目名称:彤筹网 - 基于SSM框架的完整项目源码 技术栈: - 主要语言:Java - 相关技术:CSS, JavaScript 项目概述: - 文件数量:共192个 - 文件类型: - XML配置文件:22个 - Java源代码文件:22个 - 图片...

    Javascript框架,弹出新的窗口,警告框

    Javascript,iframe的使用,框架,弹出新的窗口,警告框 window.open Javascript,iframe的使用,框架,弹出新的窗口,警告框 window.open Javascript,iframe的使用,框架,弹出新的窗口,警告框 window.open ...

    多功能SSM框架权限管理系统源码

    项目名称:多功能SSM框架权限管理系统源码 技术栈: - 主要语言:JavaScript - 包含语言:JavaScript, CSS, HTML, Java, PHP 文件构成: - 总文件数:2350个 - JavaScript 文件:1024个 - CSS 文件:344个 - ...

    awesome-javascript:精​​选JavaScript框架,库和软件清单

    精选JavaScript框架,库和软件的清单。 的开源代码库和课程表。 在家学习编码。 :vulcan_salute: Vue.js是一个渐进的,可逐步采用JavaScript框架,用于在Web上构建UI。 用于构建用户界面的声明性,高效且灵活...

    基于SSM框架的企业工资管理系统源码

    项目标题:基于SSM框架的企业工资管理系统源码 技术概述: - 主要编程语言:JavaScript - 综合技术栈:JavaScript, Java, CSS - 文件构成:总计268个文件,包括以下类型: - GIF预览图:75个 - JavaScript文件:...

    基于SSM框架的积分管理系统源码

    项目名称:基于SSM框架的积分管理系统 技术栈: - 主要编程语言:Java - 辅助技术:JavaScript 文件构成: - 总文件数:442个 - Java类文件:150个 - 配置文件(XML):111个 - Java源代码文件:66个 - JAR...

    Java SSM框架集成的日志功能增强Demo源码

    项目名称:Java SSM框架集成日志功能增强Demo 主要编程语言:Java 技术栈包含: - Java - JavaScript - CSS - HTML 文件概览: - 总计文件数:86个 - Java源文件:26个 - XML配置文件:16个 - JavaScript脚本...

    "SSM框架下的JavaScript全栈简单案例源码"

    项目标题:基于SSM框架的JavaScript全栈简易案例源码集 项目概述: 本项目采用JavaScript作为主要开发语言,整合了前端与后端的开发技术,构建了一个基于SSM(Spring、SpringMVC、MyBatis)框架的全栈简易案例。...

    基于Python Django框架的库存管理系统源码

    本项目采用Python语言为主开发,结合JavaScript、CSS、HTML等多种技术构建。系统旨在提供一个简易、高效的库存管理解决方案。 技术栈: - 后端:Python(Django框架) - 前端:JavaScript、CSS、HTML 文件构成: -...

    基于SSM框架的企业客户关系管理(CRM)系统源码

    项目概述:基于SSM框架的企业级客户关系管理(CRM)...简述:本项目是采用SSM(Spring、Spring MVC、MyBatis)框架开发的企业CRM系统,集成了前端与后端完整的功能实现,为企业的客户关系维护提供了一站式的解决方案。

    基于Python Django框架的完整后台管理系统源码

    项目概述:这是一款基于Python Django框架开发的完整后台管理系统,采用前后端不分离的模式构建。系统源码包含多种文件类型,总计173个文件,其中主要包括JavaScript(90个文件)、Python(41个,包括py和pyc文件)...

    javascript弹出层表单提交代码

    javascript弹出层表单提交代码,就是点击按钮后,弹出一个form表单让你填写,等你填好后再提交

Global site tag (gtag.js) - Google Analytics