Javascript 如何在不全局化的情况下将同一行中的一个变量设置为另一个变量

Javascript 如何在不全局化的情况下将同一行中的一个变量设置为另一个变量,javascript,Javascript,在这种情况下: (function() { const a = b = 10; })(); console.log('a:', a); // ReferenceError: a is not defined console.log('b:', b); // 10 b在全局范围内被定义为var。是否可以这样做,但使baconst也在同一范围内?就像a?一样,您可以将b设置为IIFE函数的参数。这样b将无法在功能范围之外访问 (功能(b){ 常数a=b=10; 控制台日志(b) })();

在这种情况下:

(function() {
   const a = b = 10;
})();
console.log('a:', a); // ReferenceError: a is not defined
console.log('b:', b); // 10

b
在全局范围内被定义为
var
。是否可以这样做,但使
b
a
const
也在同一范围内?就像
a

一样,您可以将
b
设置为IIFE函数的参数。这样
b
将无法在功能范围之外访问

(功能(b){
常数a=b=10;
控制台日志(b)
})();
console.log('b:',b)我不这么认为。这种“技巧”是可能的,因为
b=10
返回
10
。但是,
const b=10
返回
undefined

为什么不直接使用:

const a = 10;
const b = a;
?


它并不慢,而且可读性更高,即使你可以嵌套作业,我也不认为有理由这么做

请修复你的代码片段。您提供的代码片段抛出错误
ReferenceError:b未定义
,即使它没有定义(可能在不同的JS引擎中?),您仍然无法访问词法范围之外的
const
标识符感谢我在研究采访问题,他们没有询问如何修复,他们只是希望我们知道
b
已经全球化了,但我很好奇如何解决这个问题。很酷的把戏!感谢我在研究面试问题,他们没有问如何解决,他们只是希望我们知道
b
已经全球化,但我很好奇如何解决。作为旁注,
const
有一个块作用域,因此如果您只使用simple if block
a
作用域仅限于该块,但在这种情况下您无法使用此解决方案,谢谢Nenad!非常有帮助!不客气。