热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js中作用域的实例解析

首先,要了解一下作用域的概念:作用--读、写,域--范围或空间。作用域:可用来进行读、写操作的范围或者空间。其次,再来看看浏览器读取js文件(script标签内的内容)的步骤。第一步:预解析-----根据varfunction把可能用到的参数或函数找出来,放

首先,要了解一下作用域的概念:作用--读、写,域--范围或空间。作用域:可用来进行读、写操作的范围或者空间。

其次,再来看看浏览器读取js文件(script标签内的内容)的步骤。

第一步:预解析-----根据var function 把可能用到的参数或函数找出来,放在内存里(这相当于放到仓库里面)

例1:


根据var和function可以找到:a fn1

预解析的过程中会自动给变量赋值undefined,即:a=undefined;而函数的值就函数本身,即:fn1=function fn1(){alert(2)}

所以预解析后:a = undefined, fn1=function fn1(){alert(2)}

如果函数和变量重名,那么只保留有值的那个。

例2:


根据var和function可以找到:a a a

预解析的过程中:a=undefined, a=function a(){alert(2)}, a=undefined

预解析之后就只有 a=function a(){alert(2)}

例3:

如果例2中var a=10后面还有一个函数function a(){alert(4)}

那么预解析之后的结果就变成了:a=function a(){alert(4)}。因为后一个有值的会覆盖前一个。

第二步:就是从上而下逐行解读代码了

例4:

首先我们知道下面的代码预解析的结果是:a=function a(){alert(4)}


---------------------上面的内容,帮助去理解预解析的概念,还没有用到“域”。而对于预解析来说,只要遇到一个“域”,就会在这个“域”内发生预解析------------------------

例5:

以下代码预解析:a=undefined,fn1=funciton fn1(){alert(a)var a=2;},然后开始执行代码


例6:在例5的基础上进行一个小改动,把var a=2改为a=2,则输出的结果又不同。


例7:在例6基础上,改动一下


打印出的结果会是:undefined,1。大家自己思考吧。提示:funciton fn1(a)相当于funciton fn1(var a)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


推荐阅读
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 本文探讨了在 APICloud 平台使用 execScript 方法时如何正确传递对象参数,并提供了详细的示例和解释。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文详细介绍了如何通过简单的JavaScript代码,在网页中实现禁用鼠标右键的功能,以保护网页内容不被轻易复制。 ... [详细]
  • Awk是一款功能强大的文本分析与处理工具,尤其在数据解析和报告生成方面表现突出。它通过读取由换行符分隔的记录,并按照指定的字段分隔符来划分和处理这些记录,从而实现复杂的数据操作。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
author-avatar
手机用户2502871803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有