首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ES6模块中,是否有任何上下文/情况无法将var更新为let?

在ES6模块中,是否有任何上下文/情况无法将var更新为let?
EN

Stack Overflow用户
提问于 2020-02-25 17:44:22
回答 1查看 44关注 0票数 0

一段时间以来,我一直使用const来声明大多数变量。

如果我不能确定一个新变量总是持有相同的值,我将使用let声明新变量。

我几乎从不使用var

那就是我。

但是,任何其他编写javascript的人都会有自己喜欢的变量声明约定,而且,如果我接受user-generated-content (如用户编写的ES6模块),就无法自信地预测这些约定可能是什么。

暂时撇开const ..。

var可以被var覆盖

我知道以下几点:

  • var myString = 'My String declared with var';
  • var myFunction = function() {console.log('My Function declared with var')};

可以用用var声明的同名变量覆盖。

示例:

代码语言:javascript
复制
var myString = 'My String declared with var';
var myFunction = function() {console.log('My Function declared with var')};

var myString = 'My Overwriting String declared with var';
var myFunction = function() {console.log('My Overwriting Function declared with var')};

console.log(myString);
myFunction();

let不能被var覆盖

我还知道如果myStringmyFunction是用let声明的

  • let myString = 'My String declared with let';
  • let myFunction = function() {console.log('My Function declared with let')};

它们随后不能用varletconst覆盖。

示例:

代码语言:javascript
复制
let myString = 'My String declared with let';
let myFunction = function() {console.log('My Function declared with let')};

var myString = 'My Overwriting String declared with var';
var myFunction = function() {console.log('My Overwriting Function declared with var')};

console.log(myString);
myFunction();

因此,了解这两方面,在所有用户提交的var模块中将任何let声明转换为let声明(无论是在编译时还是在运行时)是否是一种合理的保障措施?

在ES6模块中是否有任何可想象的上下文/情况无法将var更新为let

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-25 18:01:16

如果用户编写了这样的函数,那么将var更改为let将失败:

代码语言:javascript
复制
function run() {
  for (var i = 0; i < 3; i++) {
    console.log(i);
  }
  console.log('final i', i);
}

console.log('starting run');
run();

function runLet() {
  for (let i = 0; i < 3; i++) {
    console.log(i);
  }
  console.log('final i', i);
}

console.log('starting runLet');
runLet();

runLet函数错误,因为我是未定义的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60400441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档