Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: MinusFour en 25 Julio 2021, 16:16 pm



Título: ¿Que tanto sabes de los entornos léxicos de javascript?
Publicado por: MinusFour en 25 Julio 2021, 16:16 pm
El objetivo del ejercicio es comprender que es lo que ocurre en cada segmento de código. Todos están relacionados al tema aunque algunos más que otros.

1.
Código
  1. (function test(){ console.log('ok'); })
  2. test();

2.
Código
  1. test()
  2. function test(){ console.log('ok'); }

3.
Código
  1. (function test(t = eval('var t = 1;')){
  2.    console.log(t);
  3. })();

4.
Código
  1. (function test(t = eval('var c = 1;')){
  2.    console.log(c);
  3.    var c = 0;
  4. })();

5.
Código
  1. (function test(){
  2.    x();
  3.    function x(){ console.log(1); };
  4.    function x(){ console.log(2); };
  5. })();

6.
Código
  1. (function test(){
  2.   x();
  3.   function x(){ console.log(1); };
  4.   {
  5.       x();
  6.       function x(){ console.log(2); };
  7.   }
  8.   x();
  9. })();

7.
Código
  1. new class {
  2.    constructor() {
  3.        x();
  4.        function x(){ console.log(1); }
  5.        function x(){ console.log(2); }
  6.    }
  7. }

8.
Código
  1. new class {
  2.    constructor() {
  3.        function x(){ console.log(1); }
  4.        {
  5.            function x(){ console.log(2); }
  6.        }
  7.        x();
  8.    }
  9. }

9.
Código
  1. new class {
  2.    constructor() {
  3.        {
  4.            function x(){ console.log('ok'); }
  5.        }
  6.        x();
  7.    }
  8. }

10.
Código
  1. new class {
  2.    constructor() {
  3.        {
  4.            function x(){ console.log(1); }
  5.            function x(){ console.log(2); }
  6.            x();
  7.        }
  8.    }
  9. }

11.
Código
  1. (function test(c){
  2.   var c;
  3.   console.log('ok');
  4. })();

12.
Código
  1. (function test(c){
  2.   let c;
  3.   console.log('ok');
  4. })();


13.
Código
  1. (function test(){
  2.   var c;
  3.   var c;
  4.   console.log('ok');
  5. })();

14.
Código
  1. (function test(c, c){
  2.   console.log(c);
  3. })(1,2);

15.
Código
  1. (function test(c, c = 2){
  2.   console.log(c);
  3. })(1);

16.
Código
  1. (function test(){
  2.   console.log(arguments);
  3. })();

17.
Código
  1. (() => console.log(arguments))();

18.
Código
  1. (function test(arguments){
  2.   console.log(arguments);
  3. })();

19.
Código
  1. (function test(...c){
  2.   console.log(arguments);
  3. })();

20.
Código
  1. (function test(){
  2.    let arguments;
  3.    console.log(arguments);
  4. })();

21.
Código
  1. (function test(){
  2.   var arguments;
  3.   console.log(arguments);
  4. })();

22.
Código
  1. (function test(){
  2.   var c;
  3.   let c;
  4. })();

23.
Código
  1. (function test(){
  2.   var c;
  3.   {
  4.       let c;
  5.   }
  6. })();

24.
Código
  1. (function test(){
  2.   let c;
  3.   {
  4.       var c;
  5.   }
  6. })();

25.
Código
  1. (function test(){
  2.   let c;
  3.   if(false){
  4.       var c;
  5.   }
  6. })();

Las respuestas las publicare a lo largo del día.

Edit: Quizás el tema vaya mejor en Desafios - Wargames o en Scripting. Pero algunas de las preguntas están relacionadas con Desarrollo Web (y esto es decir mucho).


Título: Re: ¿Que tanto sabes de los entornos léxicos de javascript?
Publicado por: MinusFour en 28 Julio 2021, 02:55 am
Mi explicación de cada código.

https://gist.github.com/MinusFour/a4a3143edc0f04cc5bd57fe500fd20ba


Título: Re: ¿Que tanto sabes de los entornos léxicos de javascript?
Publicado por: [u]nsigned en 11 Agosto 2021, 00:02 am
Excelente, muchas de estas cosas entran en las preguntas de entrevista técnica, tambien te suelen poner 'trampitas' con los closures y el hoisting.   ;-)


Título: Re: ¿Que tanto sabes de los entornos léxicos de javascript?
Publicado por: carlmarx en 24 Abril 2023, 10:11 am
Excelente, muchas de estas cosas entran en las preguntas de entrevista técnica, tambien te suelen poner 'trampitas' con los closures y el hoisting.   ;-)

Sucede. En general, todo nuestro departamento fue despedido por errores en el desarrollo de programas en Java. Al final resultó que, generalmente usan una versión obsoleta. No sé dónde reclutaron a estas personas en absoluto. Luego recurrimos a desarrolladores externos https://qawerk.es/servicios/pruebas-de-aplicaciones-de-escritorio/ para probar todo después del lanzamiento. Esto cambió radicalmente la situación.