当前位置: 首页 > 面试题库 >

Java在try块中设置const变量

于恺
2023-03-14
问题内容

是否有可能在 ES6 设置的变量中try{}使用const严格模式?

'use strict';

const path = require('path');

try {
    const configPath = path.resolve(process.cwd(), config);
} catch(error) {
    //.....
}

console.log(configPath);

由于configPath定义超出范围,因此无法删除。看来可行的唯一方法是:

'use strict';

const path = require('path');

let configPath;
try {
    configPath = path.resolve(process.cwd(), config);
} catch(error) {
    //.....   
}

console.log(configPath);

基本上,有什么方法可以const代替let这种情况吗?


问题答案:

将变量声明为const要求您立即将其指向一个值,并且此引用不能更改。

表示您无法在某个位置(之外try)进行定义,而在其他位置(内)为其赋值try

const test; // Syntax Error

try {

  test = 5;

} catch(err) {}

另一方面,在try块内创建它并为其赋值都很好。

try {

  const test = 5; // this is fine

} catch(err) {}

但是,它const是块范围的,就像一样let,因此,如果您确实在try块中创建它并为其提供值,则它将仅存在于该范围内。

try {

  const test = 5; // this is fine

} catch(err) {}

console.log(test); // test doesn't exist here

因此,如果您需要在之外访问此变量,则try必须使用let

let configPath;
try {
   configPath = path.resolve(process.cwd(), config);
} catch(error) {
    //.....   
}

console.log(configPath);

另外,尽管可能更令人困惑,但是您可以使用var在内创建变量,try然后在变量外使用变量,因为var它的作用范围是函数而不是块(并被提升):

try {
   var configPath = path.resolve(process.cwd(), config);
} catch(error) {
    //.....   
}

console.log(configPath);


 类似资料:
  • 问题内容: 我的问题是我必须在try语句中设置变量,否则会出现编译错误。 稍后我需要使用该变量,但现在超出了范围,所以我相信。我在try语句外部初始化了该变量并将其设置为null,我以为可以在外部访问它,但仍然得到了。 下面的代码,其中有很多代码使阅读变得更容易-我知道这是不好的代码,但是我是Servlets的新手,只想看看它与所有活动部件一起运行时应如何工作。 我创建了另一个类,该类调用crea

  • 问题内容: 我最初从大学开始编程,然后学习了vb.net。现在,我决定转向Java并进行一些查询。在vb中,try catch语句的布局如下 但是在Java网站(https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html)中,我发现在Java中,您使用了两个陷阱,如下所示: 我希望有人能够解释为什么

  • 我是新来的反应,我有一个问题,也许很简单,但我还无法弄清楚。 我有一个调用const组件子组件的const组件父组件,我想要的是将值从父组件传递给子组件,如果值在子组件中被编辑,父组件可以访问编辑后的值。 我想要的是这个,下面的const组件是子组件,它只是渲染一个地图,如果您单击它设置const selectedPotionwith经度和纬度,我希望const组件父组件传递经度和纬度的初始值,每

  • 我有一个在try块中调用setInterval的代码,我清除了代码末尾的间隔,但是如果我的代码捕获和异常,setInterval函数将永远运行。如果我在try块中创建的sqsInterval在捕获中不存在,我如何清除此?

  • 问题内容: 我希望通过以下方式在Java中实现某些功能: …根据变量名设置变量,而无需硬编码变量名并且不使用任何其他数据结构。这可能吗? 问题答案: 这是使用反射实现的方式(我已将函数重命名;针对不同的字段类型有不同的反射函数):

  • 问题内容: 我正在尝试在设置数组之前对要设置的数组进行排序,但是的参数是不可变的,并且会改变值。如何克服这个限制? 为了使这个问题脱离我自己的项目环境,我提出了以下要点: 我收到错误消息,指出该变量不可变,正在尝试对其进行突变。 问题答案: 不能对内部的值进行突变。如果实现观察者,则将新的属性值作为常量参数传递给它。 修改它以使用该怎么办? 在值存储之前被调用。 新值存储后立即调用。 您可以在此处