About Nicholas C. Zakas

Recent Posts

Empty-string URLs in HTML – A followup

Late last year, after spending 10 days tracking down a horrific bug, I posted, Empty image src can destroy your site. The post laid out a problem present in almost all modern browsers regarding empty string URLs in HTML. Empty-string URLs look like this: <img src=""> <script src=""> <link rel="stylesheet" href=""> Depending on the browser,... […]

Custom events in JavaScript

Without a doubt, the most often-used paradigm in JavaScript is events. Events are a manifestation of the observer pattern, a well-defined computer science design pattern for loose coupling. Loose coupling is incredibly important for creating maintainable, stable codebases. I talk a lot about loose coupling and its importance in my talk, Scalable JavaScript Application Architecture... […]

Maintainable JavaScript: Don’t modify objects you don’t own

The first talk I gave after arriving at Yahoo! was entitled Maintainable JavaScript (video). As with most topics I write or speak about, I didn’t think it would be terribly controversial. The basis of the talk is that hacking around on your own and writing code in an enterprise environment are two different things. Web... […]

Answering Soshnikov’s quiz

JavaScript quizzes have sure been popular lately. The latest addition is one by Dmitry A. Soshnikov and is affectionately called, The quiz. I must admit, this quiz has some of the most mind-bending examples of JavaScript I’ve ever seen. What I like about his quiz is that each piece of code is more or less... […]

My JavaScript quiz – answers

Earlier this week, I posted my JavaScript quiz, containing some basic code along with questions. Here are the answers. Example #1 var num1 = 5, num2 = 10, result = num1+++num2; The key to understanding this example is to understand operator precedence. Clearly, +++ isn’t a valid operator, so the JavaScript engine breaks it up... […]

My JavaScript quiz

Recently, there have been a couple of JavaScript quizzes floating around. There was one by Dmitry Baranovskiy (for which I explained the answers) and one by Kangax. But there are so many strange pieces of JavaScript that I thought I’d put together a quiz of my own. I’ve decided that each part will be a... […]

Announcing High Performance JavaScript

Last year was one in which I did a lot of research on performance, resulting in the Speed Up Your JavaScript blog post series (part 1, part 2, part 3, part 4) as well as several talks, namely JavaScript Variable Performance at the San Francisco JavaScript Meetup, Speed Up Your JavaScript at Google (video), and... […]

How Internet Explorer 8 document mode affects JavaScript

In a previous post, I talked about Internet Explorer 8′s wide array of browser and document modes. Most people are pretty familiar with how the various document modes affect layout in terms of how CSS is implemented, but what has been lost is how the document mode affects the core JavaScript engine in the browser.... […]

Answering Baranovskiy’s JavaScript quiz

Last week, I tweeted about a JavaScript quiz I came across on Dmitry Baranovskiy’s blog entitled, So you think you know JavaScript? As with other quizzes of this type, there is only one question to answer for five different pieces of example code: what is the result? The example code tests some of the quirkier... […]

Internet Explorer 8 document and browser modes

When Microsoft began planning for Internet Explorer 8, they were struck with an interesting problem. They were willing to admit that Internet Explorer had implementation bugs both in rendering and scripting. After admitting that, though, they had the problem that is commonly referred to as “don’t break the Internet.” Microsoft had no way of knowing... […]