Perguntas da entrevista JS:
[Clique aqui para receber informações sobre as perguntas da entrevista]
1. Quais tipos de dados são retornados por typeof de javascript
string
, boolean
, number
, undefined
, function
,object
2. mencionado três tipos de moldes e dois tipos de conversão de tipo implícito?
Obrigatória ( parseInt
, parseFloat
, number
) implícita ( == === + -
)
3. A diferença entre split () e join ()
split()
é cortar a string em um array, que join()
é converter o array em um string.
4. Métodos de array pop (), push (), unshift (), shift ()
push()
Adicione no finalpop()
Apagar caudaunshift()
Adição de cabeçashift()
Exclusão de cabeçalho
5. Quais são os métodos de escrita compatíveis no IE e padrões
var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target
6. A diferença entre get e post quando a solicitação de ajax
get
Ele está deurl
voltapost
na operadora virtual dentroget
Existe um limite de tamanho (apenas alguns parâmetros podem ser enviados)post
Queget
segurança- Diferentes aplicativos, solicitar dados e enviar dados
7.call 和 apply 的 区别 Object.call
(this, obj1, obj2, obj3) Object.apply (this, arguments)
apply
E a call
única diferença é que diferentes parâmetros do segundo modo de transferência, apply
um segundo parâmetro deve ser uma matriz, e call
pode passar uma lista de parâmetros.
8. Como analisar dados json quando a solicitação ajax é
usadaJSON.parse
9. O que é delegação de evento?
Use o princípio de bolha de evento para permitir que seus próprios eventos disparados sejam executados por seus elementos pais!
10. O que é um encerramento, quais são suas características e qual o impacto que ele tem na página. Um
encerramento é uma função que pode ler as variáveis internas de outras funções, de modo que a função não seja reciclada pelo mecanismo de GC. o fechamento é muito usado, é fácil causar vazamentos de memória.
Por que você está fechando o portal
11. Como impedir que o evento borbulhe
- ou seja: pare de borbulhar
ev.cancelBubble = true
; - Não-IE
ev.stopPropagation()
;
12. Como bloquear eventos padrão
- 1
return false
- 2
ev.preventDefault()
.;
13. Adicionar, excluir, substituir e inserir em um método de contato
1. Crie um novo nó
// 创建一个具体的元素
createElement();
// 创建一个文本节点
createTextNode();
2. Adicionar, remover, substituir, inserir
appendChild(); //添加
removeChild(); //移除
replaceChild(); //替换
insertBefore(); //插入
3. Encontre
//通过标签名称
getElementsByTagName();
//通过元素的Name属性的值
getElementsByName();
//通过元素Id,唯一性
getElementById();
14. Explique o princípio do jsonp e por que não é um ajax real
criar script
tags e funções de retorno de chamada dinamicamente
Ajax
É a página sem operação de solicitação de atualização de dados
15.A diferença entre o carregamento do documento e o documento pronto é
document.onload
que js
ele é executado somente depois que a estrutura e o estilo, o exterior e a imagem são carregados.js
document.ready
Uma dom
árvore foi criada na implementação do método, este método não é nativo, jquery
existe$().ready(function)
16. ”"com"= "A diferença
==
converterá automaticamente o tipo, e então julgará se é igual,
===
não converterá automaticamente o tipo, basta ir para a comparação
17. Qual é a diferença entre declaração de função e expressão de função?
Em Javscript
, o analisador não trata declarações de função e expressões de função da mesma forma ao carregar dados no ambiente de execução. O analisador lerá a declaração de função primeiro e a tornará disponível (acessível) antes de executar qualquer código. Quanto às expressões de função, devem esperar até que o analisador é executado na linha de código em que está localizado antes de ser realmente analisado e executado.
18. Para entender o contexto do escopo e isso, observe o seguinte código:
var User = {
count: 1,
getCount: function() {
return this.count;
}
};
console.log(User.getCount()); // 1
var func = User.getCount;
console.log(func()); // 是1和undefined
`func`是在`window`的上下文中被执行的,所以不会访问到`count`属性。
19. Observe o código abaixo e forneça o resultado de saída.
for(var i = 1; i <= 3; i++){
//建议使用let 可正常输出i的值
setTimeout(function(){
console.log(i);
},0);
};
4 4 4。
// 原因:Javascript事件处理器在线程空闲之前不会运行。
20. Quando um nó DOM é clicado, queremos ser capazes de executar uma função, o que devemos fazer?
box.onlick= function(){
}
box.addEventListener("click",function(){
},false);
<button οnclick="box()"></button>
21. Qual é o modelo de fluxo de eventos do Javascript? O
“事件冒泡”:
evento começa a ser recebido pelo elemento mais específico e, em seguida
“事件捕捉”:
, é propagado para cima nível a nível. O evento é recebido primeiro pelo nó menos específico e, em seguida, desce nível por nível para os
“DOM事件流”:
três estágios mais específicos : captura de evento, estágio de destino, borbulhamento de evento
22. Observe o código a seguir, qual é a saída? Explique o motivo.
var a = null;
alert(typeof a);
// object
Explicação: Esse JavaScript
tem sido o caso desde seu início. É null
um tipo de dados com apenas um valor e esse valor é null
. Representa um objeto de ponteiro nulo, portanto, o typeof
teste retornará ”object”
.
23. Determine que a string deve começar com uma letra, seguida por números, sublinhados, letras e o comprimento é 6-30
var reg=/^[a-zA-Z]\w{5,29}$/;
24. Responda ao seguinte código, qual é o valor do alerta?
var a = 100;
function test() {
alert(a);
a = 10; //去掉了var 就变成定义了全局变量了
alert(a);
}
test();
alert(a);
// 正确答案是:100, 10, 10
25. Qual é a diferença entre os dois intervalos de variáveis de javaScript?
- Variáveis globais: válido na página atual
- Variáveis locais: válidas dentro do método da função
26. A diferença entre null e undefined?
null
É um objeto que representa "nenhum", que é convertido em um valor numérico 0
; undefined
é um valor original que representa "nenhum", que é convertido em um valor numérico NaN
. Quando a variável declarada não foi inicializada, o valor padrão da variável undefined
. null
Usado para indicar objetos que ainda não existem
undefined
Indica "valor faltando", ou seja, deveria haver um valor aqui, mas ainda não foi definido. O uso típico é:
1. Quando a variável é declarada, mas não atribuída, é igual a undefined
.
2. Ao chamar a função, o parâmetro que deve ser fornecido não é fornecido e o parâmetro é igual a undefined
.
3. O objeto não tem nenhum atributo atribuído e o valor do atributo é undefined
.
4. Quando a função não retorna um valor, ela retorna por padrão undefined
.
null
Significa "nenhum objeto", ou seja, não deveria haver nenhum valor ali. O uso típico é:
1. Como parâmetro de uma função, significa que o parâmetro da função não é um objeto.
2. Como o fim da cadeia de protótipos de objetos.
27. O que exatamente o novo operador faz?
1. Crie um objeto vazio, e esta variável se refere ao objeto, e ao mesmo tempo herda o protótipo da função.
2. Propriedades e métodos são adicionados ao objeto referenciado por este.
3. O objeto recém-criado é referenciado por this e, finalmente, retorna isso implicitamente.
Quais são as maneiras de atrasar o carregamento em 28.js?
defer
comasync
- Criado dinamicamente
DOM
(modo de criaçãoscript
, inserido noDOM
meio, carregadocallBack
) - Carregar js de forma assíncrona sob demanda
29. Como escolher entre as vantagens e desvantagens do Flash e Ajax em uso?
Comparação de Flash Ajax
1. É Flash
adequado para processamento de multimídia, gráficos vetoriais e acesso a máquinas; CSS
não é fácil de ser pesquisado devido ao processamento de texto insuficiente.
2. ajax
Sim CSS
, o suporte de texto é muito bom, pesquisa de suporte; multimídia, gráficos vetoriais, acesso à máquina é insuficiente.
Pontos comuns: entrega não atualizada de mensagens com o servidor, status do usuário offline e online, operação do DOM
30. Não use loops, crie um array de comprimento 100, e o valor de cada elemento é igual ao seu subscrito.
new Array(100).fill(0).map((_, c) => c)
31 Como desejo todas as caixas de seleção da página? (Não usa estruturas de terceiros)
var inputs = document.getElementsByTagName("input"); // 获取所有的input标签对象
var checkboxArray = []; // 初始化空数组,用来存放checkbox对象。
for(var i=0;i<inputs.length;i++){
var obj = inputs[i];
if(obj.type=='checkbox'){
checkboxArray.push(obj);
}
}
32. Escreva uma função para limpar os espaços antes e depois da string. (Compatível com todos os navegadores)
String.prototype.trim= function(){
return this.replace(/^\s+/,"").replace(/\s+$/,"");
}