Freecodecamp: `var` deve ser desencorajado.

Criado em 13 ago. 2016  ·  3Comentários  ·  Fonte: freeCodeCamp/freeCodeCamp

O escopo e funções globais do desafio tem um problema.
O agente do usuário é: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 .
Descreva como reproduzir esse problema e inclua links para capturas de tela, se possível.

Meu código:

// Declare your variable here
var myGlobal = 10;

function fun1() {
  // Assign 5 to oopsGlobal Here

}

// Only change code above this line
function fun2() {
  var output = "";
  if (typeof myGlobal != "undefined") {
    output += "myGlobal: " + myGlobal;
  }
  if (typeof oopsGlobal != "undefined") {
    output += " oopsGlobal: " + oopsGlobal;
  }
  console.log(output);
}

Precisamos começar a usar es6 let e const . var declaração de variável é um bug em potencial.

discussing

Comentários muito úteis

@BKinahan Bem colocado.

Quando usar e não usar var nem sempre depende do desenvolvedor individual, mas na maioria das vezes depende da equipe.

Embora eu não tenha encontrado um momento em que var não pudesse ser substituído por let ou const , conversei com um engenheiro da OpenTable, que recentemente refatorou toda a sua base de código para usar ES2015, e ele mencionou que havia um caso em que let ou const era a causa de um bug e var tinha que ser usado, mas ele não conseguia se lembrar dos detalhes exatos de por que isso foi.

Não acho que var deva ser desencorajado. Melhor explicar como var funciona e deixar o desenvolvedor escolher quando estiver mais adiante em sua jornada rumo à iluminação.

Existem também algumas estranhezas com let e const que se você não estiver ciente disso, pode passar por alguns loops (ver: zona morta temporal ). Isso não desqualifica let e const de serem usados, embora seja um incômodo. Significa apenas que grocar algo é tão importante quanto saber algo.

Todos 3 comentários

Os recursos do ES6, incluindo let e const , serão abordados em detalhes nos novos tópicos do currículo que estão sendo desenvolvidos (veja aqui ). Esses desafios também abordarão os problemas que podem ser causados ​​por escopo / içamento ao usar var .

Por enquanto, este desafio serve como uma introdução ao escopo e alguns dos problemas a serem observados quando var é usado, e ainda contém informações úteis, pois os campistas provavelmente encontrarão código de outras fontes (mais antigas) que use var (por exemplo, código legado, etc) e, portanto, é uma introdução útil aos problemas discutidos.

Pode haver um argumento para remover a linha

Você sempre deve declarar suas variáveis ​​com var.

ou alterando-o com alguma advertência sobre aprender sobre let e const mais tarde, mas acho que este desafio é adequado para uma primeira introdução ao tópico.

cc @ FreeCodeCamp / issue-moderators Opiniões?

@BKinahan Bem colocado.

Quando usar e não usar var nem sempre depende do desenvolvedor individual, mas na maioria das vezes depende da equipe.

Embora eu não tenha encontrado um momento em que var não pudesse ser substituído por let ou const , conversei com um engenheiro da OpenTable, que recentemente refatorou toda a sua base de código para usar ES2015, e ele mencionou que havia um caso em que let ou const era a causa de um bug e var tinha que ser usado, mas ele não conseguia se lembrar dos detalhes exatos de por que isso foi.

Não acho que var deva ser desencorajado. Melhor explicar como var funciona e deixar o desenvolvedor escolher quando estiver mais adiante em sua jornada rumo à iluminação.

Existem também algumas estranhezas com let e const que se você não estiver ciente disso, pode passar por alguns loops (ver: zona morta temporal ). Isso não desqualifica let e const de serem usados, embora seja um incômodo. Significa apenas que grocar algo é tão importante quanto saber algo.

Obrigado pelas contribuições. Ambos são pontos positivos. Eu acho que tudo isso é baseado em opinião. No entanto, eu manteria minha declaração e iria mais longe a ponto de pregar o uso de dados imutáveis ​​e bibliotecas como immutable.js ou mori para evitar mutações inesperadas de dados. ✌️

Esta página foi útil?
0 / 5 - 0 avaliações