bad parts Archive

Eval and evil differ by only one letter, ever thought about that? I am just kidding though. Eval in itself is not at all evil, actually it is rather handy – it evaluates a string and if that string is a JavaScript statement, executes it. Nothing bad about that, however many JavaScript developers have misused eval() and did things like:

This makes code injection attacks possible. Since eval() will try to read whatever the myVariable contains. Using eval() in this way makes the code harder to maintain and debug. All in all, you should start learning to avoid eval() since in ECMAScript 5 “strict mode” eval is not allowed and will probably be deprecated or removed in ECMAScript


When I search online for good JavaScript code examples there is one thing that I immediately look for inside that code. Does it have == or === comparison operators (double or triple equal signs). The reason for doing that is that it gives me an idea of how reliable the code is. I understand that this is not the only reliability indicator, but it is pretty important. However, I have noticed that during the last couple of years many JavaScript developers became aware of the possible pitfalls of == (double equal) comparison. Maybe because of Douglas Crockford, maybe because of JSLint or JSHint. Nobody knows why, but I definitely find less and less examples with == in the code… So, what is all the fuzz about these comparison operators? Well you might have guessed it – they are one of the bad parts of JavaScript language. Consider this example:

*Example taken from Douglas Crockford’s book: JavaScript the Good Parts, which I highly recommend for new JS developers. What was going through the heads of JavaScript language creators when this was allowed to happen?! All in all, the general suggestions would be to use the === and !== comparison operators. Unless, you are a seasoned JavaScript developer avoid == and != . Even if you are seasoned developer there must be a very specific reason why you choose to use the less predictable comparison operators, right


As you may know JavaScript has some of the best features that modern programming languages can offer, however it also has some really terrible parts. This is going to be a series of short posts about those terrible parts. My intention is to shed some light on these problems and help you mitigate or avoid them entirely. I will start of with my personal favorite – plus operator. JavaScript has this terrible design flaw – plus operator is overloaded. Meaning that it can have two distinct behaviors depending on the situation. The same operator can both add and concatenate. Let me give some examples of this weird behavior:

Basically, when you mix numbers with strings bad things start to happen. In order to avoid problems with addition and concatenation try to ensure that all of your operands are of the same type: numbers or strings. This will ensure that the plus operator is working in the expected mode and will not switch in the middle of you operation. Thank you for reading, everyone