1. Escopo da variável Javascript
Em JavaScript, as variáveis são divididas principalmente em dois tipos: variáveis locais e variáveis globais, e os escopos correspondentes também são escopo local e escopo global.
1 Variáveis locais e escopo
Variáveis locais são geralmente declaradas e usadas dentro do corpo da função:
function func(){ var i=12;//Variáveis locais...}O escopo de uma variável local é usado dentro do corpo da função na qual a variável é declarada.
O ciclo de declaração de variáveis locais é inicializado quando a função é chamada e executada e é destruído após a conclusão da chamada da função.
2. Variáveis globais e escopo
Variáveis globais são geralmente declaradas fora do corpo da função:
var i=12;//variável global função func(){......}Há também uma variável que é usada diretamente, sem declaração, e o padrão é uma variável global:
function func(){ i=12;//Não declarado (declarado usando a palavra-chave var), o padrão é variável global}Variáveis globais podem ser usadas em todos os scripts e métodos da página atual e seu escopo está no script da página atual.
O ciclo de declaração de variáveis globais é criado quando a variável é inicializada e destruído quando a página atual é fechada.
2. palavra-chave typeof
A palavra-chave typeof é usada principalmente para detectar o tipo de dados de variáveis. Os principais tipos de dados em JavaScript são string, número, booleano, objeto, etc.
console.log(typeof 'str');//stringconsole.log(typeof 23);//numberconsole.log(typeof false);//booleanconsole.log(typeof [1,3,12]);//objectconsole. log(typeof {nome:'jack',idade:12});//objectconsole.log(typeof new Date());//objetoNota: Arrays e objetos json em js são todos do tipo de dados de objeto.
3. nulo e indefinido
Nulo e indefinido geralmente aparecem em JavaScript, indicando que o valor de uma variável está vazio ou que uma variável não está definida. Ao expressar valores, eles podem ser expressos como valores nulos, mas ainda são diferentes em termos de tipos de dados.
console.log(typeof null);//objectvar persion = null;console.log(persion);//nullconsole.log(typeof indefinido);//undefinedvar persion2;console.log(persion2);//indefinido
O tipo de dados nulo é objeto e o tipo de dados indefinido é indefinido.
Quando uma variável é declarada, o valor é nulo, e o valor da variável é nulo; quando uma variável é apenas declarada, sem atribuição, o valor é indefinido;
Vejamos outro conjunto de comparações:
console.log(null==indefinido);//valores verdadeiros são iguais console.log(null===undefinido);//tipos falsos não são iguais
Pode-se ver que quando nulo e indefinido representam valores, ambos representam vazio, o tipo de dados nulo é objeto e o tipo de dados indefinido é indefinido; Os valores declarados sem inicialização são indefinidos.
O seguinte é um suplemento
Situação Um
<script> var i; //Variáveis globais//O nome do método é a nomenclatura camel //As variáveis no método são variáveis locais function sayHello(){ var x=100; //Output 100 alert(x); //Erro relatado porque x é uma variável local e não pode ser acessada</script>Situação Dois
<script>function sayHello(){ var x=100; if(x==100){ var y=x+1; //Saída 101 } alert(y); Dentro do método, não há escopo em nível de bloco, o que não é possível em C#! ! ! for(var i=0;i<2;i++){ alert(i) } //A variável definida no loop for é o escopo em nível de bloco alert(i); } digaOlá();</script>Nota: Variáveis não precisam ser declaradas com var antes de serem usadas. Tais variáveis serão consideradas "variáveis globais", mas raramente são usadas desta forma.
Sobre indefinido e nulo
Nas situações a seguir, o valor da variável é indefinido.
1. Se uma variável for definida, mas não for atribuído um valor, o valor da variável será indefinido.
2. O método chamado não possui valor de retorno e o valor retornado é indefinido.
3. Se o valor do atributo do objeto não existir, o valor de retorno será indefinido, como: document.ddd
Exemplo1:
var xx;var yy=null;if(xx==yy){ alert('equal');}else{ alert('not equal');}Os resultados de saída são iguais porque ao realizar o julgamento if, o navegador julgará os valores de xx e yy. Como ambos não possuem valores específicos, eles são considerados falsos.
Se o julgamento if for substituído por ===[sinal de todos iguais], a saída não será igual! Porque === significa que os tipos de dados e valores de xx e yy devem ser iguais!
Exemplo2:
var xx=10var yy='10';if(xx==yy){ alert('equal');}else{ alert('not equal');}A saída é igual. Se for alterado para ===, a saída não é igual.
Exemplo3:
var n='10';switch(n){ case 10: alert('número'); case '10': alert('string');Cadeia de saída
O julgamento em switch deve considerar o tipo
Resumo: O julgamento no if é julgar o valor, independente do tipo.