Javascript Interview Questions and Answers
Javascript Interview Questions and Answers
Answers
What is JavaScript?
A1: JavaScript is a general-purpose programming language designed to let programmers
of all skill levels control the behavior of software objects. The language is used most
widely today in Web browsers whose software objects tend to represent a variety of
HTML elements in a document and the document itself. But the language can be--and is--
used with other kinds of objects in other environments. For example, Adobe Acrobat
Forms uses JavaScript as its underlying scripting language to glue together objects that
are unique to the forms generated by Adobe Acrobat. Therefore, it is important to
distinguish JavaScript, the language, from the objects it can communicate with in any
particular environment. When used for Web documents, the scripts go directly inside the
HTML documents and are downloaded to the browser with the rest of the HTML tags
and content.
(Note: the first comment, "<--" hides the content of the script from browsers that don't
understand javascript. The "// -->" finishes the comment. The "//" tells javascript that this
is a comment so javascript doesn't try to interpret the "-->". If your audience has much
older browsers, you should put this comments inside your javascript. If most of your
audience has newer browsers, the comments can be omitted. For brevity, in most
examples here the comments are not shown. )
The above code will look like this on Javascript enabled browsers,
2. Javascript can be placed inside the <head> element
Functions and global variables typically reside inside the <head> element.
<head>
<title>Default Test Page</title>
<script language="JavaScript" type="text/javascript">
var myVar = "";
function timer(){setTimeout('restart()',10);}
document.onload=timer();
</script>
</head>
How can JavaScript make a Web site easier to use? That is, are there certain
JavaScript techniques that make it easier for people to use a Web site?
JavaScript's greatest potential gift to a Web site is that scripts can make the page more
immediately interactive, that is, interactive without having to submit every little thing to
the server for a server program to re-render the page and send it back to the client. For
example, consider a top-level navigation panel that has, say, six primary image map links
into subsections of the Web site. With only a little bit of scripting, each map area can be
instructed to pop up a more detailed list of links to the contents within a subsection
whenever the user rolls the cursor atop a map area. With the help of that popup list of
links, the user with a scriptable browser can bypass one intermediate menu page. The
user without a scriptable browser (or who has disabled JavaScript) will have to drill down
through a more traditional and time-consuming path to the desired content.
How can JavaScript be used to improve the "look and feel" of a Web site? By the
same token, how can JavaScript be used to improve the user interface?
On their own, Web pages tend to be lifeless and flat unless you add animated images or
more bandwidth-intensive content such as Java applets or other content requiring plug-ins
to operate (ShockWave and Flash, for example).
Embedding JavaScript into an HTML page can bring the page to life in any number of
ways. Perhaps the most visible features built into pages recently with the help of
JavaScript are the so-called image rollovers: roll the cursor atop a graphic image and its
appearance changes to a highlighted version as a feedback mechanism to let you know
precisely what you're about to click on. But there are less visible yet more powerful
enhancements to pages that JavaScript offers.
Interactive forms validation is an extremely useful application of JavaScript. While a user
is entering data into form fields, scripts can examine the validity of the data--did the user
type any letters into a phone number field?, for instance. Without scripting, the user has
to submit the form and let a server program (CGI) check the field entry and then report
back to the user. This is usually done in a batch mode (the entire form at once), and the
extra transactions take a lot of time and server processing power. Interactive validation
scripts can check each form field immediately after the user has entered the data, while
the information is fresh in the mind.
Another helpful example is embedding small data collections into a document that scripts
can look up without having to do all the server programming for database access. For
instance, a small company could put its entire employee directory on a page that has its
own search facility built into the script. You can cram a lot of text data into scripts no
larger than an average image file, so it's not like the user has to wait forever for the data
to be downloaded.
Other examples abound, such as interactive tree-structure tables of contents. More
modern scriptable browsers can be scripted to pre-cache images during the page's initial
download to make them appear lickety-split when needed for image swapping. I've even
written some multi-screen interactive applications that run entirely on the client, and
never talk to the server once everything is downloaded.
scripts[0] = "PHP";
scripts[1] = "ASP";
scripts[2] = "JavaScript";
scripts[3] = "HTML";
Now our array scrips has 4 elements inside it and we can print or access them by using
their index number. Note that index number starts from 0. To get the third element of the
array we have to use the index number 2 . Here is the way to get the third element of an
array.
document.write(scripts[2]);
We also can create an array like this
var no_array = new Array(21, 22, 23, 24, 25);
Fixed width tables are rendered by the browser based on the widths of the columns in the
first row, resulting in a faster display in case of large tables. Use the CSS style table-
layout:fixed to specify a fixed width table.
If the table is not specified to be of fixed width, the browser has to wait till all data is
downloaded and then infer the best width for each of the columns. This process can be
very slow for large tables.
Example of using Regular Expressions for syntax checking in JavaScript
...
var re = new RegExp("^(&[A-Za-z_0-9]{1,}=[A-Za-z_0-9]{1,})*$");
var text = myWidget.value;
var OK = re.test(text);
if( ! OK ) {
alert("The extra parameters need some work.\r\n Should be something
like: \"&a=1&c=4\"");
}
cookies.txt
c:\Program Files\Netscape\Users\username\cookies.txt
In the case of IE,each cookie is stored in a separate file namely username@website.txt.
c:\Windows\Cookies\username@Website.txt
Another useful approach is to set the "type" to "button" and use the "onclick" event.
<script type="text/javascript">
function displayHero(button) {
alert("Your hero is \""+button.value+"\".");
}
</script>
How can JavaScript be used to personalize or tailor a Web site to fit individual
users?
JavaScript allows a Web page to perform "if-then" kinds of decisions based on browser
version, operating system, user input, and, in more recent browsers, details about the
screen size in which the browser is running. While a server CGI program can make some
of those same kinds of decisions, not everyone has access to or the expertise to create
CGI programs. For example, an experienced CGI programmer can examine information
about the browser whenever a request for a page is made; thus a server so equipped might
serve up one page for Navigator users and a different page for Internet Explorer users.
Beyond browser and operating system version, a CGI program can't know more about the
environment. But a JavaScript-enhanced page can instruct the browser to render only
certain content based on the browser, operating system, and even the screen size.
Scripting can even go further if the page author desires. For example, the author may
include a preference screen that lets the user determine the desired background and text
color combination. A script can save this information on the client in a well-regulated
local file called a cookie. The next time the user comes to the site, scripts in its pages
look to the cookie info and render the page in the color combination selected previously.
The server is none the wiser, nor does it have to store any visitor-specific information.
Are you concerned that older browsers don't support JavaScript and thus exclude a
set of Web users? individual users?
Fragmentation of the installed base of browsers will only get worse. By definition, it can
never improve unless absolutely everyone on the planet threw away their old browsers
and upgraded to the latest gee-whiz versions. But even then, there are plenty of
discrepancies between the scriptability of the latest Netscape Navigator and Microsoft
Internet Explorer.
The situation makes scripting a challenge, especially for newcomers who may not be
aware of the limitations of earlier browsers. A lot of effort in my books and ancillary
material goes toward helping scripters know what features work in which browsers and
how to either workaround limitations in earlier browsers or raise the compatibility
common denominator.
Designing scripts for a Web site requires making some hard decisions about if, when, and
how to implement the advantages scripting offers a page to your audience. For public
Web sites, I recommend using scripting in an additive way: let sufficient content stand on
its own, but let scriptable browser users receive an enhanced experience, preferably with
the same HTML document.
In a pop-up browser window, how do you refer to the main browser window that
opened it?
Use window.opener to refer to the main window from pop-ups.
What and where are the best JavaScript resources on the Web?
The Web has several FAQ areas on JavaScript. The best place to start is something called
the meta-FAQ [14-Jan-2001 Editor's Note: I can't point to it anymore, it is broken!],
which provides a high-level overview of the JavaScript help available on the Net. As for
fact-filled FAQs, I recommend one maintained by Martin Webb and a mini-FAQ that I
maintain.
For interactive help with specific problems, nothing beats the primary JavaScript Usenet
newsgroup, comp.lang.javascript. Depending on my work backlog, I answer questions
posted there from time to time. Netscape and Microsoft also have vendor-specific
developer discussion groups as well as detailed documentation for the scripting and
object model implementations.
What are the problems associated with using JavaScript, and are there JavaScript
techniques that you discourage?
Browser version incompatibility is the biggest problem. It requires knowing how each
scriptable browser version implements its object model. You see, the incompatibility
rarely has to do with the core JavaScript language (although there have been
improvements to the language over time); the bulk of incompatibility issues have to do
with the object models that each browser version implements. For example, scripters who
started out with Navigator 3 implemented the image rollover because it looked cool. But
they were dismayed to find out that the image object wasn't scriptable in Internet
Explorer 3 or Navigator 2. While there are easy workarounds to make this feature work
on newer browsers without disturbing older ones, it was a painful learning experience for
many.
The second biggest can of worms is scripting connections between multiple windows. A
lot of scripters like to have little windows pop up with navigation bars or some such
gizmos. But the object models, especially in the older browser versions, don't make it
easy to work with these windows the minute you put a user in front of them--users who
can manually close windows or change their stacking order. More recently, a glitch in
some uninstall routines for Windows 95 applications can disturb vital parts of the system
Registry that Internet Explorer 4 requires for managing multiple windows. A scripter
can't work around this problem, because it's not possible to detect the problem in a user's
machine. I tend to avoid multiple windows that interact with each other. I think a lot of
inexperienced Web surfers can also get confused by them.
How to access an external javascript file that is stored externally and not
embedded?
This can be achieved by using the following tag between head tags or between body tags.
<script src="abc.js"></script>How to access an external javascript file that is stored
externally and not embedded? where abc.js is the external javscript file to be accessed.
Taking a developer’s perspective, do you think that that JavaScript is easy to learn
and use?
One of the reasons JavaScript has the word "script" in it is that as a programming
language, the vocabulary of the core language is compact compared to full-fledged
programming languages. If you already program in Java or C, you actually have to
unlearn some concepts that had been beaten into you. For example, JavaScript is a
loosely typed language, which means that a variable doesn't care if it's holding a string, a
number, or a reference to an object; the same variable can even change what type of data
it holds while a script runs.
The other part of JavaScript implementation in browsers that makes it easier to learn is
that most of the objects you script are pre-defined for the author, and they largely
represent physical things you can see on a page: a text box, an image, and so on. It's
easier to say, "OK, these are the things I'm working with and I'll use scripting to make
them do such and such," instead of having to dream up the user interface, conceive of and
code objects, and handle the interaction between objects and users. With scripting, you
tend to write a _lot_ less code.
What Web sites do you feel use JavaScript most effectively (i.e., best-in-class
examples)? The worst?
The best sites are the ones that use JavaScript so transparently, that I'm not aware that
there is any scripting on the page. The worst sites are those that try to impress me with
how much scripting is on the page.
How to hide javascript code from old browsers that dont run it?
Use the below specified style of comments <script language=javascript> <!-- javascript
code goes here // --> or Use the <NOSCRIPT>some html code </NOSCRIPT> tags and
code the display html statements between these and this will appear on the page if the
browser does not support javascript
What does the term sticky session mean in a web-farm scenario? Why would you
use a sticky session? What is the potential disadvantage of using a sticky session?
Sticky session refers to the feature of many commercial load balancing solutions for web-
farms to route the requests for a particular session to the same physical machine that
serviced the first request for that session. This is mainly used to ensure that a in-proc
session is not lost as a result of requests for a session being routed to different servers.
Since requests for a user are always routed to the same machine that first served the
request for that session, sticky sessions can cause uneven load distribution across servers.
You have an ASP.NET web application running on a web-farm that does not use sticky
sessions - so the requests for a session are not guaranteed to be served the same machine.
Occasionally, the users get error message Validation of viewstate MAC failed. What
could be one reason that is causing this error?
The most common reason for this error is that the machinekey value in machine.config is
different for each server. As a result, viewstate encoded by one machine cannot be
decoded by another. To rectify this, edit the machine.config file on each server in the
web-farm to have the same value for machinekey.
...
How to find the selected radio button immediately using the 'this' variable?
<script>
function favAnimal(button) {
alert('You like '+button.value+'s.');
}
</script>
<input type="radio" name="marsupial" value="kangaroo"
onchange="favAnimal(this)">Kangaroo
<br /><input type="radio" name="marsupial" value="Opossum"
onchange="favAnimal(this)">Opossum
<br /><input type="radio" name="marsupial" value="Tasmanian Tiger"
onchange="favAnimal(this)">Tasmanian Tiger
<p id="firstP">firstP<p>
</body>
</html>
How to have the status line update when the mouse goes over a link (The support of
the status line is sporadic)?
<a href="javascript.shtml"
onmouseover="window.status='Hi There!';return true"
onmouseout="window.status='';return true">Look at the Status bar</a>
Look at the Status bar as your cursor goes over the link.
function setValueFromCookie(widget) {
if( getCookieData(widget) != "") {
document.getElementById(widget).value = getCookieData(widget);
}
}
//if you name your cookies the widget ID, you can use the following helper function
function setCookie(widget) {
document.cookie = widget + "=" +
escape(document.getElementById(widget).value) + getExpirationString();
}
Or, interestingly enough you can just assign the event's name on the object directly with a
reference to the method you want to assign.
You can also use the W3C addEvventListener() method, but it does not work in IE yet:
Key Events
<script type="text/javascript">
function setStatus(name,evt) {
evt = (evt) ? evt : ((event) ? event : null); /* ie or standard? */
var charCode = evt.charCode;
var status = document.getElementById("keyteststatus");
var text = name +": "+evt.keyCode;
status.innerHTML = text;
status.textContent = text;
}
</script>
<form action="">
<input type="text" name="keytest" size="1" value=""
onkeyup="setStatus('keyup',event)"
onkeydown="setStatus('keydown',event)"
/>
<p id="keyteststatus">status</p>
</form>
if ( x == y) {
myElement.style.visibility = 'visible';
} else {
myElement.style.visibility = 'hidden';
}
This produces
<script type="text/javascript">
var days = ["Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday"];
document.write("days[\"Monday\"]:"+days["Monday"]);
</script>
This produces
days["Monday"]:Monday
<script type="text/javascript">
var days = ["Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday"];
document.write("days:"+days.join(","));
</script>
This produces
days:Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
<script type="text/javascript">
var numbers = ["one", "two", "three", "four"];
numbers.push("five");
numbers.push("six");
document.write(numbers.pop());
document.write(numbers.pop());
document.write(numbers.pop());
</script>
This produces
sixfivefour
<script type="text/javascript">
var myMovie = new Object();
myMovie.title = "Aliens";
myMovie.director = "James Cameron";
document.write("movie: title is \""+myMovie.title+"\"");
<
This produces
movie: title is "Aliens"
To create an object you write a method with the name of your object and invoke the
method with "new".
<script type="text/javascript">
function movie(title, director) {
this.title = title;
this.director = director;
}
var aliens = new movie("Aliens","Cameron");
document.write("aliens:"+aliens.toString());
</script>
This produces
aliens:[object Object]
You can also use an abbreviated format for creating fields using a ":" to separate the
name of the field from its value. This is equivalent to the above code using "this.".
<script type="text/javascript">
function movie(title, director) {
title : title;
director : director;
}
var aliens = new movie("Aliens","Cameron");
document.write("aliens:"+aliens.toString());
</script>
This produces
aliens:[object Object]
How to associate functions with objects using JavaScript?
Let's now create a custom "toString()" method for our movie object. We can embed the
function directly in the object like this.
<script type="text/javascript">
function movie(title, director) {
this.title = title;
this.director = director;
this.toString = function movieToString() {
return("title: "+this.title+" director: "+this.director);
}
}
var narnia = new movie("Narni","Andrew Adamson");
document.write(narnia.toString());
</script>
This produces
title: Narni director: Andrew Adamson
Or we can use a previously defined function and assign it to a variable. Note that the
name of the function is not followed by parenthesis, otherwise it would just execute the
function and stuff the returned value into the variable.
<script type="text/javascript">
function movieToString() {
return("title: "+this.title+" director: "+this.director);
}
function movie(title, director) {
this.title = title;
this.director = director;
this.toString = movieToString; //assign function to this method pointer
}
var aliens = new movie("Aliens","Cameron");
document.write(aliens.toString());
</script>
This produces
title: Aliens director: Cameron
eval()?
The eval() method is incredibly powerful allowing you to execute snippets of code during
execution.
<script type="text/javascript">
var USA_Texas_Austin = "521,289";
document.write("Population is "+eval("USA_"+"Texas_"+"Austin"));
</script>
This produces
Population is 521,289
What does break and continue statements do?
Continue statement continues the current loop (if label not specified) in a new iteration
whereas break statement exits the current loop.
unescape(), escape()
These are similar to the decodeURI() and encodeURI(), but escape() is used for only
portions of a URI.
<script type="text/javascript">
var myvalue = "Sir Walter Scott";
document.write("Original myvalue: "+myvalue);
document.write("<br />escaped: "+escape(myvalue));
document.write("<br />uri part: \"&author="+escape(myvalue)+"\"");
</script>
If you use escape() for the whole URI... well bad things happen.
<script type="text/javascript">
var uri = "http://www.google.com/search?q=sonofusion Taleyarkhan"
document.write("Original uri: "+uri);
document.write("
escaped: "+escape(uri));
v/script>
decodeURI(), encodeURI()
Many characters cannot be sent in a URL, but must be converted to their hex encoding.
These functions are used to convert an entire URI (a superset of URL) to and from a
format that can be sent via a URI.
<script type="text/javascript">
var uri = "http://www.google.com/search?q=sonofusion Taleyarkhan"
document.write("Original uri: "+uri);
document.write("<br />encoded: "+encodeURI(uri));
</script>