`

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弹出框架,特别是`lhgdialog`,为网页开发者提供了强大的交互设计工具,使他们能够构建更丰富、更具有吸引力的用户体验。通过熟练掌握这类框架,开发者可以创建更加灵活和个性化的弹出对话框,提高用户...

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

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

    javascript经典特效---弹出窗口(一).rar

    在JavaScript编程领域中,弹出窗口是一种常见的交互方式,它能提供额外的信息或者用户输入的途径。本资源“javascript经典特效---弹出窗口(一).rar”主要关注如何使用JavaScript来实现弹出窗口的特效。这里我们将...

    Javascript弹出对话框

    在网页中,我们经常需要与用户进行交互,比如显示提示信息、获取用户输入等,这时候JavaScript的弹出对话框功能就显得尤为重要。本文将深入探讨"Javascript点击弹出对话框"这一主题,以及如何在实际应用中实现类似...

    JavaScript弹出层

    JavaScript弹出层是一种常见的网页交互元素,用于在用户与页面交互时显示额外的信息或功能,如警告、确认对话框、模态窗口等。在网页设计和开发中,掌握JavaScript弹出层的创建和操作技巧是至关重要的。下面将详细...

    JavaScript面试题

    JavaScript,作为全球最广泛使用的客户端脚本语言,是构建现代Web应用的核心技术之一。对于求职者来说,掌握JavaScript面试题并理解其背后的原理是至关重要的。以下是一些常见的JavaScript面试题,以及它们所涵盖的...

    网页弹出div层的js-javascript

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

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

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

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

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

    多功能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文件:...

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

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

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

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

    弹出div框架

    标题中的“弹出div框架”指的是在网页设计中利用HTML、CSS和JavaScript技术实现的一种交互效果,即通过点击按钮或链接等方式,使一个div元素(通常包含内容或信息)从页面背景中弹出,形成一个浮动窗口或者对话框。...

    基于java的-132-jspm专业实习网站-源码.zip

    【标签】为空,意味着没有特定的技术标签来指导我们理解项目的具体技术栈。通常,这样的项目可能会涉及以下技术: 1. **Java**:这是一种广泛使用的面向对象的编程语言,尤其适用于企业级应用和Web服务开发。在这个...

    框架集弹出框

    "框架集弹出框"这个主题,可能指的是在框架集中使用JavaScript或者jQuery来实现类似于弹出对话框的效果。 首先,让我们来了解`frameset`标签。在HTML中,`&lt;frameset&gt;`元素用于定义页面的框架布局。通过使用`&lt;frame&gt;...

    Javascript 弹出层效果

    JavaScript弹出层效果是一种常见的网页交互设计,它允许在用户与网页交互时显示额外的信息或功能,而不会离开当前页面。这种技术广泛应用于提示、警告、登录框、模态对话框以及各种用户反馈形式。在本篇文章中,我们...

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

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

Global site tag (gtag.js) - Google Analytics