`

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,转载请注明。

分享到:
评论

相关推荐

    基于java的-39-12-五台山景点购票系统-源码.zip

    这是一个基于Java技术开发的五台山景点购票系统源代码项目,主要使用了Spring、SpringMVC和MyBatis(SSM)三大框架进行构建。该项目的源代码组织结构清晰,便于理解和学习。以下是对各部分的详细解释: 1. **Spring...

    毕业设计[整站程序]天地网络-网络学院全站_tiandinetxy.zip

    【标签】虽为空,但我们可以推断出一些关键标签,如:“毕业设计”、“整站程序”、“网络学院”、“PHP”(因为通常使用PHP进行网页开发)、“MySQL”(常用于数据库存储)和“前端技术”(HTML、CSS、JavaScript等...

    JAVASCRIPT弹出窗口大总结

    ### JavaScript弹出窗口知识点总结 #### 一、概述 JavaScript是一种广泛使用的脚本语言,它在前端开发中占据着极其重要的地位。通过JavaScript,开发者可以实现网页与用户的交互功能,其中弹出窗口就是一种常见的...

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

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

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

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

    基于java的-104-202202059. 学习啦!--MHK在线学习小程序-源码.zip

    开发者可能使用了Spring Boot或Spring MVC等框架来构建这个服务,因为“ssm”(Spring、SpringMVC、MyBatis的缩写)在文件名中出现,这暗示了后端使用了这些技术。 "??java?-104-202202059. ???!--MHK???????-??\...

    网页弹出div层的js-javascript

    下面将详细介绍如何使用js-javascript来实现div层的弹出效果。 首先,我们要明白JavaScript(简称JS)是一种轻量级的解释型编程语言,常用于网页和网络应用的客户端脚本。在网页中,JS可以操作DOM(文档对象模型)...

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

    为了解决这个问题,开发者们创造出了各种自定义的弹出窗口框架,其中lhgdialog就是一个基于JavaScript实现的优秀实例。 lhgdialog框架是一个轻量级的、高度可定制的弹出窗口解决方案,它通过使用HTML的DIV元素和CSS...

    基于java的-121-jspm网上电子书店--LW-源码.zip

    "jspm"可能指的是JavaScript包管理器,它在前端部分用于管理和组织JavaScript库和模块。而"网上电子书店"则明确了项目的目标,即创建一个在线的图书销售平台。 在项目中,我们能看到两个重要的文件夹:“??java?-...

    基于java的-139-net东风锻造有限公司点检管理系统-源码.zip

    【标签】为空,意味着没有预定义的特定技术关键词,但我们可以通过标题和描述推测出一些关键点,例如Java开发、企业级应用、设备点检管理等。 【压缩包子文件的文件名称列表】包含以下文件: 1. ??java?-139-net???...

    弹出窗口资料弹出窗口资料

    在IT行业中,弹出窗口是一种常见的用户界面设计元素,它用于显示额外的信息或者与用户进行交互。本资料主要探讨弹出窗口的相关知识点,包括其功能、类型、实现方式以及优化策略。 1. 弹出窗口的功能: 弹出窗口...

    基于java的-146-php基于web的衡水游泳馆管理系统-LW-源码.zip

    2. **Spring框架**:Spring是一个全面的开发框架,它支持依赖注入、事务管理、安全控制以及AOP(面向切面编程)。在游泳馆管理系统中,Spring可能用于处理业务逻辑和数据库操作。 3. **Hibernate或MyBatis**:这些是...

    JavaScript弹出式日历

    JavaScript弹出式日历是一种常见的前端交互功能,它允许用户在网页上方便地选择日期,而无需离开当前页面。这种日历通常以对话框或浮动窗口的形式出现,点击后会在输入框旁边显示一个包含日期的选择界面。用户选择...

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

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

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

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

    基于java的-25-[计算机毕业设计]基于SSM雁门关风景区宣传网站-源码.zip

    标题中的“基于java的-25-[计算机毕业设计]基于SSM雁门关风景区宣传网站-源码.zip”表明这是一个关于计算机毕业设计的项目,它使用了Java编程语言,并且基于Spring、Struts和MyBatis(简称SSM)框架构建了一个雁门关...

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

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

    javascript经典特效---文字从右弹出.rar

    【JavaScript经典特效——文字从右弹出】 在网页设计中,动态效果往往能吸引用户的注意力,提高用户体验。JavaScript作为一种客户端脚本语言,被广泛用于实现各种网页交互效果,其中之一便是"文字从右弹出"的特效。...

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

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

    点击弹出小窗口

    在IT行业中,"点击弹出小窗口"是一个常见的交互设计技术,主要应用于网页或桌面应用程序,为用户提供一种轻量级的交互方式。这种技术通常涉及到前端开发中的JavaScript、HTML和CSS,以及可能的库和框架如jQuery或Vue...

Global site tag (gtag.js) - Google Analytics