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
aconst
也在同一范围内?就像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 blocka
作用域仅限于该块,但在这种情况下您无法使用此解决方案,谢谢Nenad!非常有帮助!不客气。