`
liukemin
  • 浏览: 8068 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于js解析执行有趣的事

阅读更多

前些天总监在群里发了两段代码:

 

var foo = 1;  
function bar() {  
    if (!foo) {  
        var foo = 10;  
    }  
    alert(foo);  
}  
bar();  

 

 

 

var a = 1;  
function b() {  
    a = 10;  
    return;  
    function a() {}  
}  
b();  
alert(a);  

 

 

不测试,大家看输出的是什么?

分享到:
评论
3 楼 hwhoho2010 2012-06-25  
这个很有意思啊,呵呵 除了预编译,还有闭包的概念在里面

对于第一个例子,在预编译bar期间,由于foo还是undefined的,所以执行了var foo = 10;这句话,而var foo就变成了函数bar的局部变量,之前定义的foo是全局变量。所以你在执行bar()时,打印的是局部变量foo(即 foo=10)而不是全局变量foo = 1
对于第二个例子,意思差不多,不过这次不但改变了a为局部变量,而且连a的类型也改了
2 楼 liukemin 2012-06-18  
rimoer 写道
试了,谁知道,来解释下...

http://liukemin.iteye.com/blog/1562948 看这篇文章
1 楼 rimoer 2012-06-18  
试了,谁知道,来解释下...

相关推荐

    javascript从定义到执行 你不知道的那些事

    在JavaScript编程中,从定义到执行的过程涉及多个关键概念,这些概念构成了JS引擎的基础工作原理。本文将详细解释这些概念,并通过一个简单的示例来阐述它们在实际执行中的作用。 首先,我们要了解的是执行环境栈...

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(9):根本没有“JSON对象”这回事 深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇) 深入理解JavaScript系列(11):执行上下文(Execution Contexts) 深入理解...

    深入理解JavaScript系列

    深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用的函数表达式 深入理解JavaScript系列(5):强大的原型和原型链 深入理解JavaScript系列(6):S.O.L.I.D五大原则之...

    JavaScript单线程和任务队列原理解析

    这篇文章主要介绍了JavaScript单线程和任务队列原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、JavaScript为什么设计为单线程? JavaScript语言的...

    深入理解JavaScript系列.chm

    3.全面解析Module模式 4.立即调用的函数表达式 5.强大的原型和原型链 6.S.O.L.I.D五大原则之单一职责SRP 7.S.O.L.I.D五大原则之开闭原则OCP 8.S.O.L.I.D五大原则之里氏替换原则LSP 9.根本没有“JSON对象”这回事! ...

    Native 与 H5 交互的那些事1

    例如,当JS需要调用Native方法时,可以通过`prompt`传递请求,然后在Android端的`onJsPrompt()`回调中解析请求并执行相应操作。 7. **协议设计**: - Js与Native交互的协议设计至关重要,它决定了数据如何在两者间...

    javascript全程指南

    JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,为网页添加交互性,使静态内容变得生动有趣。作为初学者,理解JavaScript的基本语法、数据类型、控制结构、函数以及面向对象编程的概念是至关重要...

    javascript入门笔记

    Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 - NodeJS 2、嵌入在浏览器中的JS解释器 JS的发展史: 1、1992年 Nombas 开发...

    架构师知识体系.pdf

    Node.js 与 io.js 那些事儿;深入解析和反思携程宕机事件;推荐文章|Article序列化和反序列; 高;可用可伸缩架构实用经验谈;专题|Topic;深入浅出 Mesos(三):持久化存储和容错;深入浅出 Mesos(四): Mesos 的资源...

    实例分析javascript中的异步

    js 异步解析 一 、js单线程分析  我们都知道js的一大特点是单线程,也就是同一时间点,只能处理一件事,一句js代码。那为什么js要设计成单线程而不是多线程呢?这主要和js的用途有关,js作为浏览器端的脚本语言,...

    这个事ajax日历代码,希望对大家有帮助

    - JavaScript解析JSON响应,然后动态更新DOM,展示日历。 5. **日历渲染**: - 通过JavaScript遍历数据,生成HTML字符串,插入到日历容器中。 - 高亮显示今天日期,标记特定日期(如节假日或已预约的日期)。 6...

    React的新引擎—ReactFiber是什么?

    浏览器中的渲染引擎是单线程的,几乎所有的操作都是在这个单线程中执行——解析渲染DOMTree和CSSTree,解析执行JavaScript——除了网络操作。这个线程就是浏览器的主线程。单线程意味着,一段时间只做一件事,所以...

    alexa-voice-service.js:用于在浏览器中与Alexa语音服务(AVS)交互的库

    你可以做的事您可以使用此库执行的操作: 用亚马逊登录并获取访问令牌获取访问令牌并从“代码”响应类型刷新令牌从刷新令牌获取访问令牌请求用户麦克风使用麦克风录制用户音频将用户音频发送到AVS 解析来自AVS的响应...

    JavaScript动态绑定详解

    问题描述: 假设我们的网页中动态生成了一个按钮,在这个按钮生成之前我们按照一般的事件绑定方法为此...3.关于JavaScript事件绑定的小解(针对本题盗图解析) 这里写图片描述 由图中我们可以看到事件冒泡即由最具体的

    Whatsapp-on-Parse-Cloud:该库可与Parse.com一起使用,以将消息从解析云发送到任何Whatsapp号码。 它是wha.tools的包装

    下载并复制文件whatsapp.js(可以使用git clone) ##设置 请按照以下步骤操作: 您要做的第一件事是转到 与他们创建一个帐户(您可以免费试用20天) 获取API密钥 在此行输入API密钥 exports.api_key = 'ADD_...

    angularjs 源码解析之injector

    其实很容易想明白,injector做了两件事 缓存那些service,以后作为参数注入 分析参数列表,找到需要的参数注入 下面源码分析如何实现上面两件事情。 结构 createInjector -> createInternalInjector return: ...

    邪恶的eval和new Function使用介绍

    Eval 函数是 JavaScript 中的一个全局函数,它可以将一个字符串解析成 JavaScript 代码并执行。 Eval 函数的语法是 `eval(string)`,其中 `string` 是要被执行的 JavaScript 代码。 Eval 函数可以被用来动态执行代码...

    C# 打造浏览器

    创建一个C#浏览器并非易事,它涉及到多个技术领域,如网络编程、UI设计、JavaScript交互等。但是,C#的强大功能和丰富的库资源为开发者提供了坚实的基础。通过逐步学习和实践,你可以构建出一个功能完善的自定义...

    2021-2022计算机二级等级考试试题及答案No.9150.docx

    15. JavaScript是一种解释执行的语言,代码边写边执行。 16. 万维网(WWW)通过超文本方式提供全球多媒体信息服务。 17. 不需要定义类就能创建对象是不正确的,对象总是基于类创建的。同时,属性可以是对象,但...

Global site tag (gtag.js) - Google Analytics