【问题标题】:How to set one variable to another in same line without globalizing [duplicate]如何在不全球化的情况下将一个变量设置为同一行中的另一个变量[重复]
【发布时间】:2019-06-10 11:20:15
【问题描述】:

在这种情况下:

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

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

【问题讨论】:

  • 请修复您的 sn-p。您提供的 sn-p 会引发错误 ReferenceError: b is not defined,即使它没有(可能在不同的 JS 引擎中?)您仍然无法在其词法范围之外访问 const 标识符

标签: javascript


【解决方案1】:

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

(function(b) {
   const a = b = 10;
   console.log(b)
})();


console.log('b:', b);

【讨论】:

  • 很酷的把戏!谢谢我正在研究面试问题,他们没有问如何解决,他们只是希望我们知道b已经全球化,但我很好奇如何解决。
  • 顺便说一句,const 有一个块作用域,所以如果你只使用简单的 if 块 a 作用域仅限于该块,但在这种情况下你不能使用这个解决方案 @987654321 @
  • 感谢内纳德!很有帮助!
  • 不客气。
【解决方案2】:

我不这么认为。这个“技巧”是可能的,因为b = 10 返回10。但是,const b = 10 返回undefined

为什么不直接使用:

const a = 10;
const b = a;

?

它并不慢,而且更具可读性,即使您可以嵌套作业我也没有真正看到这样做的理由

【讨论】:

  • 谢谢我正在研究面试问题,他们没有问如何解决,他们只是希望我们知道b已经全球化,但我很好奇如何解决。
猜你喜欢
  • 2018-11-23
  • 2019-05-08
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多