My Coding Quiz #12

avatar

My Coding Quiz #12 👨‍💻🛠️🧩

Welcome to the new installment of my series of Coding Quizzes, in which you will be able to test your knowledge and skills about programming and software development in a simple and fun way. If you want to learn more about it visit my blog here on Hive and the first post where I introduced it.

Without further ado, here's the riddle...




Quiz
By @eniolw


What's your choice?

Solution to the previous quiz: 1. For starters, all the code consists of a self-executing function, which is very normal in Javascript. We recognize the self-executing function by being wrapped in parentheses followed by the parentheses corresponding to the call. When designing code, these functions are generally anonymous, so the identifier quiz was unnecessary.

Let's move on to its content. In the first line of the quiz function, a y variable is declared and assigned the value false. Nothing special.

Then there is a if (y % 2 === 0) clause. Perhaps not surprisingly, this expression evaluates to true. The point is that in Javascript booleans are converted to integers depending on the operator used on them and we know that 0 % 2 is 0.

There's a theory going around that Booleans are really integers behind the scenes, but official documentations don't talk about it at all, but about type conversions.

This explains what happens in the if block (line 4) that happens to be executed. The false value of y is converted to the integer 0 and this is incremented by one by the ++ operator, overriding the value of y. The value of y is therefore 1 and that is the output that is logged on the final line of the function.

There is no reason to believe that the code has a bug or syntax error. It is a feature of Javascript and you have to keep it in mind when writing good code, to avoid errors.


If you want to blog about computer science and programming content, I invite you to join Hive and participate in its communities, such as STEM-social, Develop Spanish, Programming & Dev, Hive Learners and others.


Mi Quiz de Programación #11 👨‍💻🛠️🧩

Bienvenido a mi nueva serie de Quizzes de Programación, en la cual podrás poner a prueba tus conocimientos y habilidades sobre programación y desarrollo de software de una manera sencilla y divertida. Si quieres aprender más sobre ella visita mi blog aquí en Hive y el primer post donde la presenté.

Sin más preámbulos, he aquí el acertijo...




Quiz
Por @eniolw


¿Cuál es tu elección?

Solución al quiz anterior: 1. Para empezar, todo el código consiste en una función autoejecutable, lo cual es muy normal en Javascript. Reconocemos la función autoejecutable por estar envuelta en paréntesis seguida de los paréntesis correspondiente a la llamada. A la hora de diseñar código, estas funciones son generalmente anónimas, de modo que el identificador quiz era innecesario.

Pasemos a su contenido. En la primera línea de la función quiz se declara una variable y y se le asigna el valor false. Nada especial.

Luego, hay una cláusula if (y % 2 === 0). Quizá no sorprenda que esta expresión se evalúe como verdadera. El punto está en que en Javascript los booleanos son convertidos a enteros dependiendo del operador usado en ellos y sabemos que 0 % 2 es 0.

Anda circulando una teoría según la cual, los booleanos son realmente enteros tras bastidos, pero documentaciones oficiales no hablan de ello para nada, sino de conversiones de tipos.

Esto explica qué ocurre en el bloque del if (línea 4) que pasa a ser ejecutado. El valor false de y es convertido al entero 0 y este es incrementado en uno por el operador ++, sobreescribiendo el valor de y. El valor de y, por tanto, es 1 y esa es la salida que se registra en la línea final de la función.

No hay razones para pensar que el código posee un bug o error de sintaxis. Es una característica de Javascript y hay que tenerla en mente a la hora de escribir buen código, para evitar errores.


Si quieres bloguear sobre contenido informático y de programación, te invito a unirte a Hive y participar en sus comunidades, tales como STEM-social, Develop Spanish, Programming & Dev, Hive Learners y otras.



0
0
0.000
5 comments
avatar

I have always run away from coding because of the frustration therein

0
0
0.000
avatar

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support. 
 

0
0
0.000
avatar

Hey! Thank you @eniolw for the clarification of the previous quiz. I definitely made a blunder.

For this one, the substracted value should be 319.

0
0
0.000
avatar

Sure. We'll see about your answer very soon :)

0
0
0.000