javascript - 为什么不使用 const、let 或 var 时,嵌套函数只能访问顶级变量?
问题描述
我正在编写一段包含多个子功能的代码。
这些子函数都在一个主函数中调用。
我想在我的主函数中定义变量,并在我的子函数中使用它们(不必将它们作为相同的参数传递)。
一个例子:
const double = () => {
console.log(a * 2);
}
const main1 = () => {
try {
const a = 1;
double();
} catch (err) {
console.log(err);
}
}
const main2 = () => {
try {
let a = 2;
double();
} catch (err) {
console.log(err);
}
}
const main3 = () => {
try {
var a = 3;
double();
} catch (err) {
console.log(err);
}
}
const main4 = () => {
try {
a = 4;
double();
} catch (err) {
console.log(err);
}
}
main1();
main2();
main3();
main4();
为什么main4()
只有一个有效?
为什么让它工作的唯一方法是不使用const
,let
或者var
?
我应该如何定义main()
我的子函数可以访问的变量,而不必将它们作为参数传递?
解决方案
推荐阅读
- javascript - HTML5 图片上传,拖放、裁剪和比例
- functional-programming - 列表:在 Erlang 中具有副作用的映射
- android - Android Samsung ACTION_IMAGE_CAPTURE 未保存为正确的文件名
- c# - 如何使用LINQ C#根据另一个字符串更改字符串内容
- ios - 代码签名错误 - 验证 CODE_SIGN_ENTITLEMENTS 的值
- maven - maven-bundle-plugin:4.1.0:install on jenkins 挂起
- java - 如何使用 IntelliJ IDEA 将远程调试正确连接到 Tomcat?
- php - 如何在控制器的 Symfony 中添加注释?
- css - Ionic 3 身高问题
- python-3.x - 如何仅保留 pdf 文本或图像的注释部分?