Note:
The purpose of this quiz isn't to be a brain-buster. It is meant for recruiters to present to front-end developer candidates.
The intent is to weed out some "Just use jQuery" applicants, but allow those that know JavaScript to pass fairly easily.
When might comparative type coercion occur? How would you avoid it? How would you change a "falsy" or "truthy" value into a real boolean?
Describe how variable scope works. Explain how to create a closure using a self-executing anonymous function (also called IIFE: immediately-invoked function expression).
Explain briefly how prototypal inheritance differs from class-based, "classical" inheritance.
Describe how the "module pattern" works. Explain how the "revealing module pattern" expands upon it.
How does a client-side MVC (or MVVM) approach work? What is your preferred MV* JS framework?
Why do these yield different results?
'1'+2+3;// Equals '123'3+2+'1';// Equals '51'3+2+1;// Equals 6
Why is
0.3not the result of the following addition? How do you work around this peculiarity?0.1+0.2;// Equals 0.30000000000000004
Describe how variable hoisting works, and how to avoid bugs that may arise from it.
How do these differ?
functionfoo(){}// versusvarfoo=function(){};
When might you use a function's
call()method, or itsapply()method?Explain how to determine if a variable is an array or an object. (Hint:
typeoflies!)In the following example, what is foo aliased to? (Hint: It is what
thismeans.)(function(foo){// What is 'foo' aliased to?})(this);
In JavaScript (and the DOM), some global variables are actually mutable, such as:
window,document, andundefined. How would you write code to ensure these were predictably available for use? Assuming someone had injected this code, how would you work around it? (Hint: See the previous question.)varwindow='';vardocument=0;varundefined=true;
In one line of code, how you would make a copy of an array?
What is the difference between
setIntervalandsetTimeout? Bonus: What is the lowest cross-browser increment that each can accurately use?Explain how
deleteworks. What types of things cannot be deleted?Describe how event delegation works, and when you should use it to handle UI interaction. Example markup…
<ulid="special"><li><ahref="#">Special link 1</a></li><li><ahref="#">Special link 2</a></li><li><ahref="#">Special link 3</a></li></ul>
What does this snippet of code do?
varfoo=bar ? bar : 0;
When might you write something like this, and what is it shorthand for?
foo&&foo.bar();
How do
parseIntandparseFloatdiffer? When would you use a number'stoFixed()method? In what instance might the following code snippet actually make sense to use?varmy_number=my_string-0;
Write a function named
sumthat returns the total of any number of parameters. Example…// Should equal 15sum(1,2,3,4,5);// Should equal 0sum(5,null,-5);// Should equal 10sum('1.0',false,1,true,1,'A',1,'B',1,'C',1,'D',1,'E',1,'F',1,'G',1);// Should equal 0.3, not 0.30000000000000004sum(0.1,0.2);
When the following code is pasted into a browser's console, what does it output?
(function(window){varhello='Hello World';vararr=['\x21','\x6E','\x61','\x6D','\x74','\x61','\x42'];varstr='';vari=16;while(i--){str+=1*hello;str+=i%2===0 ? '\x2C\x20' : '';}str=str.replace(/\x4E+/g,'\x6E');str=str.replace(/\x6E\x2C/g,'\x2C');str=str.slice(0,1).toUpperCase()+str.slice(1,str.length);str+=arr.reverse().join('');window.console.log(str);})(this);