É essa pesquisa e teste cegos e sem princípios que me deixaram desmaiado. É necessário fazer isso? De fato, não há necessidade de fazer tantos testes depois de entender os princípios e depois desenhar as regras. As regras do ECMAScript foram definidas.
A regra do VAR é: use VAR para declarar uma variável que é uma variável interna, caso contrário, é para chamar a variável global primeiro, não importa quantas camadas de funções sejam.
A regra disso é: a isto na função do método sempre aponta para si mesma, e isso na função comum sempre aponta para o DomWindow.
// maldição // variável local, variáveis globais de todas as subfunções this.a = 456; // Propriedade do objeto (function () {alert (a); // 123, alerta global (this.a); // função normal e indefinida, este ponto para domwindow}) (); } var f = new Foo (); // maldição this.a = 456; (função (a) {// alerta de declaração local (a); // 456, o global é substituído por um declarado localmente pela função}) (this.a); } var f = new Foo (); // maldição this.a = 456; (function () {alert (a); // 123, alerta global (this.a); // indefinido, domwindow this.b = 789; // window.b = 789}) (); (function () {alert (this.b); // 789, window.b}) (); } var f = new Foo (); (function () {alert (this.b); // 789, window.b}) (); // maldito (function () {alert (this.b); // 789, window.bvar b = 0; alert (b); // 0, esse teste foi escrito!}) (); } var f = new Foo (); (function () {alert (this.b); // 789, window.balert (b); // 789, window.b}) ();Surpreendentemente, o último alerta (b) ainda resultou em 789. // Nenhuma surpresa!
// maldito (function () {alert (this.b); // 789, window.balert (b); // indefinido, var global b = 0; alert (b); // 0, também existe esse teste!}) (); } var f = new Foo (); (function () {alert (this.b); // 789, window.balert (b); // 789, window.b}) ();PS: Método JS para excluir variáveis locais
alerta ('valor:'+str+'/ttype:'+typeof (str)) // Antes de declarar a variável, consulte var str = "dd"; alert ('valor:'+str+'/ttype:'+typeof (str)) // após declarar e atribuir a variável, consulte a str = indefinido; // Exclua o alerta variável local ('valor:'+str+'/ttype:'+typeof (str)) // Após o cancelamento da variável, consulte STR = indefinido, o mesmo que o primeiroO exposto acima é a análise mais recente das variáveis globais JS e variáveis locais introduzidas pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!