JS 变量声明简介
为正在构建 alis4ops.com 的父亲撰写本指南。
- 我称之为“巴巴”。
- 他正在学习构建 Web 应用程序,以前是一名电气工程师。
- 将在提到他的文章周围留下一些注释,因此 interwebz 上阅读本文的任何人都可以忽略这些行。希望大家不要介意!
语境
我们有以下功能:
- handleStartTouch
- handleMoveTouch
DragDrop.js 中定义的 Baba
function handleStartTouch(event) { draggedElement = event.target; const touch = event.touches[0]; touchStartX = touch.clientX - draggedElement.getBoundingClientRect().left; touchStartY = touch.clientY - draggedElement.getBoundingClientRect().top; } function handleMoveTouch(event) { event.preventDefault() if (draggedElement) { const touch = event.touches[0]; // ..more code } }
请注意,我们正在在线访问draggedElement:
- if(拖动元素){
hanldeMoveTouch 调用时不会引发错误。
在 Chrome DevTools 中的 if (draggedElement) 上放置断点将显示,draggedElement 解析为handleStartTouch 中 event.target 提供的相同 html 元素
问题
为什么在handleStartTouch中定义了draggedElement,却可以在handleMoveTouch中访问draggedElement
更一般地说,为什么我们可以在 JavaScript 中的另一个函数中访问在一个函数中定义的变量?
解释
看handleStartTouch函数:
function handleStartTouch(event) { draggedElement = event.target; const touch = event.touches[0]; touchStartX = touch.clientX - draggedElement.getBoundingClientRect().left; touchStartY = touch.clientY - draggedElement.getBoundingClientRect().top; }
具体来说:
draggedElement = event.target;
它不使用任一关键字来声明变量名称 DraggedElement
- 常量
- 让
- var
例如,我们不是这样定义它的:
const draggedElement = event.target;
变量声明(又名关键字)
在 Javascript 中,当我们不使用变量声明(也称为关键字)时,javascript 会将该变量视为全局变量.
锻炼
考虑以下示例,其中我们定义了两个函数:
// Takes in two arguments and returns the sum function add(x, y) { sum = x + y return sum } // prints sum if it is defined function printStatus() { if (sum) { console.log("Sum: ", sum) } else { console.log("Sum does no exist") } }
在 Chrome 中打开 DevTools
- 导航至“控制台”
- 复制并粘贴上面的代码
- 按回车键
- 它将返回未定义,没关系。
在控制台中调用add(1,1)
- 你会看到控制台返回2
add(1,1) => 2
然后调用 printStatus
- 您将看到输出 Sum: 2
我们可以看到 printStatus() 可以访问 add(x, y) 中定义的变量 sum
这是因为变量 sum 是在没有以下关键字的情况下声明的:
- 总和 = x + y
现在让我们更改 add(x, y) add 以使用 sum 变量声明
// Takes in two arguments and returns the sum function add(x, y) { const sum = x + y // use the variable declartion const return sum } // prints sum if it is defined function printStatus() { if (sum) { console.log("Sum: ", sum) } else { console.log("Sum does no exist") } }
- 转到 Chrome
- 使用 Ctrl + R 刷新页面
- 您还可以打开一个新选项卡并再次打开 devtools 控制台。
我们再定义一下控制台日志中的函数。
- 将上面的代码片段复制并粘贴到控制台中,然后按 Enter。
我们需要重新定义它,因为我们启动了一个新的开发控制台。
现在在控制台中,调用 add(2, 2)
- 你会看到控制台返回4
调用 printStatus 看看是否可以访问 add(x, y) 中定义的变量 sum
printStatus() > Uncaught ReferenceError: sum is not defined at printStatus (<anonymous>:9:3) at <anonymous>:1:1
错误提示总和未定义
这证实了当在函数内使用变量声明(const、let、var)定义变量时,该变量的作用域仅在函数内
当在函数中定义变量时没有
变量声明,该变量的作用域是全局的。希望这对巴巴(以及其他阅读本文的人)有帮助。
以上是JS 变量声明简介的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。
