
Como começar rapidamente com VUE3.0: Comece aprendendo
"Se você sabe como usar ES6, então use-o!": Este é o "rugido" que um líder fez aos membros da equipe durante uma revisão de código porque descobriu muitos lugares durante a revisão do código. É melhor usar o método de escrita ES5. Isso não significa que escrever em ES5 não funcionará e haverá bugs.
Acontece que esse líder tinha um fetiche por código. Ele estava extremamente insatisfeito com os membros que tinham de 3 a 5 anos de experiência escrevendo código nesse nível e continuava reclamando do código. No entanto, sinto que ainda ganhei muito com as reclamações dele, então registrei as reclamações do líder e as compartilhei com outros escavadores. Se você achar que são úteis, dê um joinha. Se houver erros ou maneiras melhores de escrever. você é muito bem-vindo para comentar.
ps: A sintaxe JS após ES5 é chamada coletivamente de ES6! ! !
1. Tucao sobre coleta de valores
O valor é muito comum em programas, como a obtenção de valor do objeto obj .
const obj={
um:1,
b:2,
c:3,
d:4,
e:5,
} Tucao :
const a = obj.a; const b = obj.b; const c = obj.c; const d = obj.d; const e = obj.e;
ou
const f = obj.a + obj.d; const g = obj.c + obj.e;
Tucao: "Você não pode usar a atribuição de desestruturação do ES6 para obter o valor? Não é legal usar 5 linhas de código em 1 linha de código? Basta usar o nome do objeto mais
o nome do atributo para obter o valor. If Está tudo bem se o nome do objeto forcurto
, mas se for muito longo, o nome do objeto estará em todo o código
. obj; const f = a + d; const g = c + e;
O contra-argumento
não é que eu não use a atribuição de desestruturação do ES6, mas que os nomes dos atributos no objeto de dados retornados pelo servidor não são o que eu quero. recriar uma atribuição de passagem.
Parece
que sua compreensão da desestruturação e atribuição do ES6 não é suficientemente completa. Se o nome da variável que você deseja criar for inconsistente com o nome da propriedade do objeto, você pode escrever:
const {a:a1} = obj;
console.log(a1); // 1 Atribuição de desestruturação ES6 suplementar
é fácil de usar. Mas observe que o objeto desestruturado não pode ser undefined ou null . Caso contrário, um erro será relatado, portanto o objeto desestruturado deverá receber um valor padrão.
const {a,b,c,d,e} = obj || 2. Reclamações sobre mesclagem de dados
, como mesclar duas matrizes e mesclar dois objetos.
const a = [1,2,3];
const b = [1,5,6];
const c = a.concat(b);//[1,2,3,1,5,6]
const obj1 = {
um:1,
}
const obj2 = {
b:1,
}
const obj = Object.assign({}, obj1, obj2);//{a:1,b:1} reclamou
se o operador de extensão do ES6 foi esquecido e a fusão de arrays não considerou a desduplicação?
Const a = [1,2,3]
melhorado
;
const b = [1,5,6];
const c = [...novo conjunto([...a,...b])];//[1,2,3,5,6]
const obj1 = {
um:1,
}
const obj2 = {
b:1,
}
const obj = {...obj1,...obj2};//{a:1,b:1} 3. Tucao sobre emenda de strings
const name = 'Xiao Ming';
pontuação constante = 59;
deixe resultado = '';
if(pontuação > 60){
resultado = `a nota do exame de ${name} está passando`;
}outro{
resultado = `${name} foi reprovado no exame`;
} Reclamando sobre
o uso de templates de string ES6 como você faz, é melhor não usá-los. Você não tem ideia de quais operações podem ser feitas em ${} . Em ${} você pode colocar qualquer expressão JavaScript, realizar operações e referenciar propriedades de objetos.
aprimorado
= 'Xiao Ming';
pontuação constante = 59;
const result = `${name}${score > 60?''s test score failed':''s test score failed'}` 4. Comentários sobre as condições de julgamento em if
(
tipo == 1 ||
tipo == 2 ||
tipo == 3 ||
tipo == 4 ||
){
//...
} Reclamando
se o método de instância de array includes será usado no ES6?
melhorada
= [1,2,3,4];
if(condição.includes(tipo)){
//...
} 5. Reclamações sobre pesquisa de lista
No projeto, a função de pesquisa de algumas listas não paginadas é implementada pelo front end. A pesquisa é geralmente dividida em pesquisa precisa e pesquisa difusa. A pesquisa também é chamada de filtragem e geralmente é implementada por meio de filter .
const a = [1,2,3,4,5];
resultado const = a.filter(
elemento =>{
item de retorno === 3
}
) Se você quiser reclamar
da busca exata, não usará find no ES6? Você entende a otimização de desempenho? Se um item que atenda às condições for encontrado no método find , ele não continuará a percorrer a matriz.
Const a = [1,2,3,4,5]
melhorado
;
resultado const = a.find(
elemento =>{
item de retorno === 3
}
) 6. Reclamações sobre arrays nivelados
Nos dados JSON de um departamento, o nome do atributo é o ID do departamento e o valor do atributo é uma coleção de array de IDs de membros do departamento. Agora precisamos extrair todos os IDs de membros do departamento em uma coleção de array.
const dependências = {
'Departamento de Compras':[1,2,3],
'Departamento de Pessoal':[5,8,12],
'Departamento Administrativo':[5,14,79],
'Ministério dos Transportes':[3,64,105],
}
deixe membro = [];
for (deixe o item em dependências){
valor const = deps[item];
if(Array.isArray(valor)){
membro = [...membro,...valor]
}
}
member = [...new Set(member)] É necessário percorrer para obter todos os valores de atributos de um objeto
?
Object.values esquecidos? Há também o processo de nivelamento envolvendo arrays. Por que não usar o método flat fornecido pelo ES6, felizmente, a profundidade do array desta vez é de apenas 2 dimensões. Se você encontrar arrays com profundidades de 4 ou 5 dimensões, é necessário? Loop loop aninhado para achatar?
Melhorar
dependências const = {
'Departamento de Compras':[1,2,3],
'Departamento de Pessoal':[5,8,12],
'Departamento Administrativo':[5,14,79],
'Ministério dos Transportes':[3,64,105],
}
let member = Object.values(deps).flat(Infinity Infinity); Infinity usado como parâmetro de flat , para que não haja necessidade de conhecer as dimensões do array achatado.
Complementado que
o método flat não oferece suporte ao navegador IE.
7. Tucao sobre como obter o valor do atributo do objeto
const
name = obj && obj.name;
O operador de cadeia opcional no ES6 será usado?
Const name = obj?.name
melhorado
8. Comentários sobre adição de atributos de objeto
Ao adicionar atributos a um objeto, o que deve ser feito se o nome do atributo mudar dinamicamente.
deixe obj = {};
deixe índice = 1;
deixe chave = `topic${index}`;
obj[key] = 'topic content'; Tucao
porque precisamos criar uma variável adicional. Gostaria de saber se expressões podem ser usadas para nomes de propriedades de objetos no ES6?
Melhore
let obj = {};
deixe índice = 1;
obj[`topic${index}`] = 'conteúdo do tópico'; 9. Julgamento sobre se a caixa de entrada não está vazia
Ao processar negócios relacionados à caixa de entrada, muitas vezes considera-se que a caixa de entrada não tem valor de entrada.
if(valor !== nulo && valor !== indefinido && valor !== ''){
//...
} Você já ouviu falar sobre o novo operador de mesclagem de valor nulo no ES6? Você precisa escrever tantas condições
?
if((valor??'') !== ''){
//...
} 10. Reclamações sobre funções assíncronas
Funções assíncronas são muito comuns e geralmente são implementadas usando o Promise.
const fn1 = () =>{
retornar nova Promessa((resolver, rejeitar) => {
setTimeout(() => {
resolver(1);
}, 300);
});
}
const fn2 = () =>{
retornar nova Promessa((resolver, rejeitar) => {
setTimeout(() => {
resolver(2);
}, 600);
});
}
constfn = () =>{
fn1().then(res1 =>{
console.log(res1); //1
fn2().then(res2 =>{
console.log(res2)
})
})
} Se você chamar
uma função assíncrona como essa, não terá medo de um retorno de chamada infernal!
Melhorar
const fn = async () =>{
const res1 = aguarda fn1();
const res2 = aguarda fn2();
console.log(res1); //1
console.log(res2);// 2
} Suplemento
: Ao fazer solicitações simultâneas, você ainda precisa usar Promise.all() .
const fn = () =>{
Promessa.all([fn1(),fn2()]).then(res =>{
console.log(res);//[1,2]
})
} Se houver solicitações simultâneas, desde que uma das funções assíncronas seja concluída, o resultado será retornado e Promise.race() deverá ser usado.
11.
Você está convidado a refutar os dez pontos das reclamações do líder acima. Se sua refutação for razoável, eu a refutarei para você na próxima reunião de revisão do código.
Além disso, se houver algum erro no conteúdo organizado acima, sinta-se à vontade para corrigi-lo nos comentários.
Este artigo foi reproduzido de: https://juejin.cn/post/7016520448204603423
Autor: Hongchen Lianxin
[Recomendação de tutorial em vídeo relacionado: web front-end]
O texto acima é o que você disse que pode usar ES6 e usá-lo rapidamente! Para mais detalhes, preste atenção a outros artigos relacionados no site php chinês!
