关于javascript中的函数作用域

2023-11-06

var scope = "global";


function f()

{

alert.log(scope);  //输出 “undefined”,而不是“global”

var scope = "local";// 变量在这里赋初值,单变量本身在函数体内任何地方军事有定义的

console.log(scope);//输出“local”

}


你可能会误以为函数中的第一行会输出“global” ,因为代码还没有执行到var语句声明

局部变量的地方。其实不然,由于函数作用域的特性,局部变量在整个函数体始终是有

定义的,也就是说,在函数体内局部变量遮盖了同名全局变量。尽管如此,只有在程序执行到

var语句的时候,局部变量才会被真正的赋值。因此,上述过程登记于:将函数内的变量

声明“提前”至函数体顶部,同事变量初始化留在原来的位置:


function f()

{

var scope; //在函数顶部声明了局部变量

alert(scope); //变量存在 ,但其值是“undefined”

scope = "local"; //这里将其初始化并赋值

alert(scope); //这里他具有了我们所期望的值

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于javascript中的函数作用域 的相关文章

  • 在 Web 浏览器中查找触发 then 事件的 jQuery 代码

    我加入了一个团队来从事一个项目 现在他们使用 jQuery 并且很多 javascript 文件都是外部文件而不是嵌入的 当我点击一个按钮时 它看起来就像 a class button cancel Cancel a 它触发一个在一个 ja
  • 如何在 Chrome 中创建 TouchEvent?

    The W3C规范 http www w3 org TR 2011 WD touch events 20110505 idl def TouchEvent宣称initTouchEvent如下 void initTouchEvent in D
  • 内联还有用吗? [复制]

    这个问题在这里已经有答案了 我相信 inline已经过时了 因为我读过here https isocpp org wiki faq inline functions 无论您如何将函数指定为inline 这是允许编译器忽略的请求 编译器可能会
  • ReferenceError:找不到变量:需要

    我在加载时遇到问题node modules到我的网页之一 我已经安装了 npm node js 并且我想使用require 函数在我的网站上初始化 Firebase 我不知道为什么 但它抛出引用错误 ReferenceError 找不到变量
  • 是否可以禁用特定 jQuery Ajax 调用的 Turbolinks 以防止页面刷新和滚动?

    我有一个 Rails 5 应用程序 非常想使用 Turbolinks 在应用程序中 有几个 PATCH ajax 调用 它们只是用新数据更新服务器 但不需要担心更新页面的状态 每当这些 ajax 请求返回时 Turbolinks 就会刷新页
  • jQuery 中的 Javascript .files[0] 属性

    jQuery 中是否有与此语句等效的语句 var value document getElementById id files 0 使用附加 files 0 的标准 jQuery 选择器似乎不起作用 并且我找不到与 files 等效的 jQ
  • 如何使用键盘和鼠标控制相机 - Three.js

    我在 WEB GL 中有一个带有 Three js 的 3D 环境 并且我曾经使用 Orbitcontrols js http codepen io nireno pen cAoGI http codepen io nireno pen c
  • 限制文本区域中每行的字符数

    我整个周末都在寻找解决这个难题的方法 但尚未找到一个可以正常工作的解决方案 我想要实现的是限制文本区域中每行的字符数 不是相同地限制它们 而是我选择的每行不同的字符数 例如 我只想在我的文本区域中包含 4 行 第 1 2 和 3 行将限制为
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • 在浏览器中语音聊天? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们正在寻求建立一个小组 voice 使用服务器上的node js 在浏览器中聊天 这可能吗 如果您希望您的解决方案是基于服务器端和客
  • 响应式网格布局框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 d3 js 中突出显示从根到选定节点的路径?

    我使用 d3 js 创建了一棵树 现在我创建了一个下拉菜单 其中包含树中所有节点的列表 现在 从下拉菜单中选择一个节点时 我想突出显示从根到该特定节点的路径 这个怎么做 首先创建一个 flatten 函数 它将分层数据变成一个 n 数组 f
  • Ember.JS - 如何在同一页面中使用多个模型、控制器和视图?

    我主要了解 Ember JS 的基础知识 大多数示例实际上只处理单个控制器和模型以在页面上显示某些内容 我真的很想用 Ember 构建一个完整的 Web 应用程序 所以有人能告诉我如何组织和连接多个控制器 模型和视图到一个页面中吗 例如 如
  • 如何从顺序键盘导航中删除 Vuetify 附加图标

    在带有 Vuetify 的 Vue js 应用程序中 我有一组用v text field并且其中有一个append icon为了切换文本可见性 如下所示
  • 聚合函数在数据框中创建不需要的向量

    我在函数中创建数据帧时遇到了一个奇怪的问题 但是 在 data frame 之外使用相同的方法效果很好 这是基本函数 我用它来计算数据集的平均值 标准差和标准误差 aggregateX lt function formula dataset
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • window.showModalDialog 的等效跨浏览器解决方案是什么?

    window showModalDialog 的等效跨浏览器解决方案有哪些 showModalDialog 在 IE 和 FF 3 中引入 我个人认为没有 但是有很多 UI 工具包提供了这样的功能 例如jQuery UI http jque
  • 当选择下拉列表中的某些值时,取消选中复选框

    当我从下拉列表中选择某个值或用户未从下拉列表中选择任何值时 我需要取消选中复选框 我现在正在使用 Jquery 这是我现在使用的代码 但它不起作用 Script
  • Restangular - _.contains() 不是一个函数

    如果您最近通过 Bower 更新了 Restangular 它将安装最新的 Lodash 新的 4 0 然而 这是一个问题 因为 Restangular Angular 现在会抛出错误 contains 不是函数 你怎么解决 解决方案非常简

随机推荐

  • ES6 数组的扩展方法

    1 数组的方法 from of from 将伪数组转换成真正的数组 function add console log arguments es5中 将参数转换成数组 let arr slice call arguments console
  • 时间序列--残差分析

    残差 y yhat 一般我们就停止在这里了 但是如果残差表现的有某种形式 代表我们的模型需要进一步改进 如果残差表现的杂乱无章 代表确实没什么别的信息好提取了 现在用最naive的model 上一个时间的值 yhat看看残差表现吧 关于残差
  • 初识QT(二十)——Qt元对象和属性系统详解

    Qt 是一个用标准 C 编写的跨平台开发类库 它对标准 C 进行了扩展 引入了元对象系统 信号与槽 属性等特性 使应用程序的开发变得更高效 本节将介绍 Qt 的这些核心特点 对于理解和编写高效的 Qt C 程序是大有帮助的 Qt 的元对象系
  • http协议 git服务器,利用Nginx搭建HTTP访问的Git服务器

    利用Nginx搭建HTTP访问的Git服务器过程记录 搭建 Git 仓库 实现 SSH 协议 配合 Nginx 实现 HTTP 协议拉取 推送代码 利用 Nginx 实现 Gitweb 在线浏览代码 使用 Gitweb theme 更新默认
  • Super Egg Drop

    题目 出处 参考的解法 class Solution public int superEggDrop int K int N int memo new int K 1 N 1 return helper K N memo private i
  • 在javascript中,slice与splice的区别

    介绍 众所周知 Javascript中的数组是能够保存多个值的变量 我们有多种方法来处理数组 其中最常用的是 slice 和 splice 有时人们会混淆这两者 因此 在本博客中 我们将了解这两种方法以及它们之间的区别 Slice slic
  • Linux网络编程-客户端与服务器端通信

    Linux网络编程 客户端连接服务器端让我们已经看到了client与server之间是如何建立连接的 接下来介绍它们之间如何建立tcp协议交互通信 先看看服务器端代码 tcpserver c include
  • 15个经典面试问题及回答思路,知乎上转疯了!

    一 简介 Handler机制是一套Android消息传递机制 在Android开发多线程的应用场景中 将工作线程中需更新UI的操作信息 传递到 UI主线程 从而实现 工作线程对UI的更新处理 最终实现异步消息的处理 在Android开发中
  • Linux 初始组(主组)和附加组详解

    Linux 初始组 主组 和附加组详解 介绍 在Linux系统中 每个用户都有一个主组和多个附加组 初始组 主组 是用户创建后默认分配的组 而附加组则可以根据需要进行添加或删除 本文将介绍Linux系统中初始组 主组 和附加组的方法 并探讨
  • tar.xz文件如何解压

    创建或解压tar xz文件的方法 习惯了 tar czvf 或 tar xzvf 的人可能碰到 tar xz也会想用单一命令搞定解压或压缩 其实不行 tar里面没有征对xz格式的参数比如 z是针对 gzip j是针对 bzip2 创建tar
  • vue el-table 树形数据懒加载每次点击子集父级只展示一行

    功能需求 每次只打开一个同级数据节点展开 之前展开的自动收起 ps 找了好久都没有找到完全符合需求的组件 展示效果 vue el table 数据懒加载实现每次子集只展示一行 实现代码 模板 使用load配合expand change使用
  • IDEA创建SpringBoot无法连接https://start.spring.io

    解决办法 将网址改成 http start spring io
  • 小白学股票基金_4_ETF

    ETF Exchange Traded Funds 中文名称为交易型开放式指数基金 是一种在交易所上市交易的开放式指数基金 兼具股票 开放式指数基金及封闭式指数基金的优势 属于高效的指数化投资工具 也就是说 如果我们买一手科技ETF 就可以
  • Intellij IDEA使用技巧,去掉拼写检查和unused提示

    在setting里面搜索spell将其中的拼写检查的 号去掉 搜索never used 关键字将其中的unused的检查去掉
  • 模块化软件设计

    模块化的基本原理 模块化 Modularity 是在软件系统设计时保持系统内各部分相对独立 以便每一个部分可以被独立地进行设计和开发 这个做法背后的基本原理是关注点的分离 SoC Separation of Concerns 关注点的分离在
  • 第5天-[21天学Python]-Python中自定义函数及调用的方法

    本章内容主要包括 声明函数 调用自定义函数 变量作用域 各种类型的函数参数应用 使用lambda建立匿名函数 Python其他常用内建函数 1 使用函数 1 1 声明函数 在python中 函数必须先声明 然后才能调用它 使用函数时 只要按
  • Multisim14.0仿真(八)LM555制作流水灯

    一 仿真原理图 二 仿真运行效果
  • mysql-数据页结构

    数据页结构 数据删除后记录并没有马上被删除 而是被打上了删除标记 并被记录到一个垃圾链表中 之后若有新纪录来 它们则可能覆盖被删除的记录占用的存储空间 页内数据组成单向链表 且再次进行了分组 每组最后一条数据顺序存储在靠近页尾部的地方 这种
  • react-jsx语法上使用switch匹配不同渲染组件

    这里主要讲的是jsx语法使用switch 的js语句 一般jsx语法执行的是简单的运算和三元表达式 如果想要执行条件判断如if语句和switch语句以及函数等 直接使用是会报错的 这里应该使用函数立即执行的语法写法 如果需要根据不同判断渲染
  • 关于javascript中的函数作用域

    var scope global function f alert log scope 输出 undefined 而不是 global var scope local 变量在这里赋初值 单变量本身在函数体内任何地方军事有定义的 consol