[TODO] Check Limitations such as File IO, Networking etc. Compare with Shell Script and Python script for automation.
You can also use JavaScript to program a server-side webapp, just like Java Servlet/JSP, Microsoft ASP, PHP, Python, etc. The appeal is that you can use one single language to program both the client-side and the server-side in a webapp.
See Node.js article.
Comments are ignored by the JavaScript runtime but greatly useful in explaining your codes to others (and also to yourself three days later). You should use comments liberally to explain or document your codes.
Like C/C++/Java, JavaScript ignores additional whitespaces (blanks, tabs, and newlines). I strongly recommend that you use additional whitespaces to format your program to make your code easier to read and understand.
An expression is a combination of variables, literals, operators, and sub-expressions that can be evaluated to produce a single value.
A statement is a single programming instruction. Unlike C/C++/Java, where you need to end a statement with a semicolon (
Semicolons in JavaScript divide the community. Some prefer to use them always, no matter what. Others like to avoid them for brevity. I shall leave it to you.
A variable is a named storage location that holds a value. Prior to ES6, you can only use
Identifiers are names given to identify entities (such as variables and functions). The rules for valid identifiers are:
JavaScript is object-oriented. But, It supports both primitive types and objects.
Primitives are not objects and do not possess properties and methods. JavaScript supports these primitive types:
JavaScript also supports these object types and value (we shall discuss object later):
Unlike most of the general programming languages (such as Java/C/C++/C#) which are strongly type, JavaScript is loosely type (similar to most of the scripting languages such as UNIX Shell Script, Perl, Python). You do not have to explicitly declare the type of a variable (such as
Arithmetic operations, as tabulated below, can be applied to numbers. The following results are obtained assuming that
In JavaScript, arithmetic operations are always performed in double-precision floating-points (NOT integers). That is,
These are short-hand operators to combine two operations.
OperatorDescriptionExampleResult+=Addition cum Assignmentx += y;Same as: x = x + y;-=Subtraction cum Assignmentx -= y;Same as: x = x - y;*=Multiplication cum Assignmentx *= y;Same as: x = x * y;/=Division cum Assignmentx /= y;Same as: x = x / y;%=Modulus cum Assignmentx %= y;Same as: x = x % y;Unlike Java/C/C++, but like HTML/CSS's attributes, you can use either single quotes or double quotes for
JavaScript is dynamically-type, and performs type conversion automatically. When a
You can also convert a number to string by concatenating with an empty string, e.g.,
JavaScript does not have a dedicated character type, but treats it as a one-character single. To get an individual character from a string, you can use:
Prior to ES6, You can enclosed a string literal using either single or double quotes (e.g.,
There is no need to escape single or double quote inside a template string (because there is no conflicts). But you need to use escape sequence for back-quote, i.e.,
Template strings support multi-line strings. All whitespaces (blank, tab, newline) within the back-quotes are part of the multi-line string. For example,
Template strings support substitution, which allow you to embed any valid JavaScript expression as part of the string in the form of
Multi-line template string with substitution provides a more convenient way to write out formatted HTML fragment. For example,
As mentioned, JavaScript performs automatic type conversion if necessary. During the type conversion, the following 6 values are converted to
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
07 vs. if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
08The strictly equality operator (
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
07) returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if both operands have the same type and same value; while abstract equality operator (if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
08) returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if both operands have the same value, but may or may not be the same type, i.e., == converts its operands if the operand types do not match.JavaScript needs to provide two different equality operators, because it is loosely type and carries out automatic type conversion in many situation. For example,
- When a number is compared with a string, the string is converted to a number (or
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
91 if it does not contain a valid number). Hence, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
14 returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26. But, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
16 returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
27, because the operands are not of the same type. if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
07, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
19, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
08, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
21 can be applied to boolean (and all the JavaScript types), e.g., if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
22 gives My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 (because empty string is converted to My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
27); but if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
25 gives My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26.- It is RECOMMENED to use
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
07 (or if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
19), instead of if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
08 (or if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
21), unless you are certain that type is not important.
String Sorting (Collation) Order
When two strings are compared, the encoding order (ASCII/Unicode table) is used. Hence, string
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
31 is greater than string if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
32.For example,
To compare two strings alphabetically, use
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
33, e.g., [TODO]Logical (Boolean) Operators
The following boolean (or logical) operators are provided in JavaScript:
OperatorDescriptionExampleResult&&Logical AND||Logical OR!Logical NOT&&=Logical AND cum assignment (ES12)||=Logical OR cum assignment (ES12)Notes:
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
34 in JavaScript is a bitwise XOR operator, not really boolean XOR (which is rarely needed).Short-Circuit Evaluation for Boolean Expressions
Evaluation of logical operations are always short-circuited. That is, the operation is terminated as soon as the result is certain, e.g., (
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
35) is short-circuited to give My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
27, (if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
37) gives My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26, the
JavaScript Example: Loop
Testing Loop
5 will not be evaluated.Explicit Type Conversion
The JavaScript runtime performs type conversion automatically. However, at times, you may need to convert from one type to another explicitly.
Converting a
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74 to a
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30: Simply concatenate the My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74 with an empty if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
43, e.g., if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
44 gives if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
45.Converting a
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30 to a My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74: Use built-in functions if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
48, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
49 or if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
50 to convert a
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
3 which contains a valid My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74. For example, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
53 gives
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
80,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
78 gives
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
80,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
79 gives
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
80, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
59 gives if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
60, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
61 gives
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
80, but if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
63 gives
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
91.Converting a float to an integer: Use
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
77 (e.g.,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
78 gives
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
80), or built-in mathematical functions such as
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
81,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
83 or
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
82.Flow Control - Decision (Conditional)
JavaScript provides these flow control construct. The syntax is the same as Java/C/C++.
SyntaxExamplealert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
3alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
4alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
5alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
6alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
7Notes: JavaScript, like C/Java, does not support native
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
71, but nested if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
72.[ES12] Logical nullish Assignment Operator (for ( initialization ; test ; post-processing ) {
body ;
}
5)
The logical nullish assignmebnt
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
74 assigns only if x is My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21 (unallocated object) or
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18 (uninitialized variable) i.e., nullish. For example,Flow Control - Loops (Repetition)
JavaScript provides the following loop constructs. The syntax is the same as Java/C/C++.
JavaScript also introduces
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
77 and alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
29 loops (to be discussed later).if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
79, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
80 and Statement Label
The following loop-control statements are provided (same syntax as Java/C/C++):
- break: exits the innermost loop.
- continue: aborts the current iteration, and continues to the next iteration.
- label: provides an identifier for a statement, which can be used by
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
81 and if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
82.
Try to avoid these statements, as they are hard to trace and maintain.
Arrays
An array is an indexed collection. An array can be used to store a list of items (elements) under a single name with an running integer index. You can reference individual element via the integral index in the form of
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
83. Furthermore, you can conveniently process all the elements of an array collectively via a loop with a varying index.Creating an Array via "Array Initializer if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
84"
You can create an array by assigning an array literal to a variable, known as Array Initializer, in the form of
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
84. For examples,Take note that JavaScript's array literal is enclosed in square bracket
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
86, instead of if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
87 in Java/C/C++. JavaScript uses if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
87 for object literal (to be discussed later).You can also use an Array Initializer to create an array with missing indexes. For example,
Accessing an Item
You can access individual element of an array via an integral index, in the form of
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
83. The index of the array begins at 0, and shall be a non-negative integer.Array's Property if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
90
The length of the array is maintained in a variable (property) called
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
90, which can be accessed via if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
92. In fact, the property if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
93 returns the last integral index plus 1, as JavaScript's array index is 0-based. Nonetheless, you are allow to manipulate (write) the if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
93. For example,Dynamic Arrays
Unlike Java/C/C++, the JavaScript array is dynamically allocated. You can add more elements to an array. You can also remove the content of an element using keyword
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
95. For examples,Accessing All Items using for-loop with index
Array is usually processed collectively using a loop, e.g.,
The JavaScript's if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
77 loop
JavaScript provides a special
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
97 loop to process all the elements in an array. The syntax is as follows, where if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
98 takes on the each of the index number of element which are not
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18.alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
8For example,
The JavaScript's alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
29 loop
JavaScript provides a special
JavaScript Example: Loop
Testing Loop
01 loop to process all the elements in an array. The syntax is as follows, where
JavaScript Example: Loop
Testing Loop
02 takes on the each of the element including the
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18.alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
9Add/Remove item(s)
You can:
- Use index
JavaScript Example: Loop
Testing Loop
04 to add one item to the end of an array. - Use
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
95 to remove a particular index (set it to
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18). - Use
JavaScript Example: Loop
Testing Loop
07 to add one or more items to the end of an array.
JavaScript Example: Loop
Testing Loop
08 returns the resultant length of the array. - Use
JavaScript Example: Loop
Testing Loop
09 to add one or more items to the beginning of an array.
JavaScript Example: Loop
Testing Loop
10 returns the resultant length of the array. - Use
JavaScript Example: Loop
Testing Loop
11 to remove and return the last item of an array. - Use
JavaScript Example: Loop
Testing Loop
12 to remove and return the first item of an array.
For examples,
PurposeExampleAdd one item to the end of an array using index
JavaScript Example: Loop
Testing Loop
13Add one or items to the end of an array using
JavaScript Example: Loop
Testing Loop
07.
JavaScript Example: Loop
Testing Loop
08 returns the resultant length of the array.Add one or items to the beginning of an array using
JavaScript Example: Loop
Testing Loop
09.
JavaScript Example: Loop
Testing Loop
10 returns the resultant length of the array.Remove and return the last item from an array using
JavaScript Example: Loop
Testing Loop
11Remove and return the first item of an array using
JavaScript Example: Loop
Testing Loop
12Array's Properties (Variables) and Operations (Functions)
The
JavaScript Example: Loop
Testing Loop
20 object has these commonly-used properties:- .length: the number of items including
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18 items. In fact, if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
93 is set to the last index plus 1.
It has these commonly-used methods:
- array.join([separator]): join the elements of an array together into a single string, separated by the
JavaScript Example: Loop
Testing Loop
23 (defaulted to
JavaScript Example: Loop
Testing Loop
24). For example, - str.split([separator, limit]): Reverse of
JavaScript Example: Loop
Testing Loop
25. Take a string and split into an array based on the
JavaScript Example: Loop
Testing Loop
26. For example, - array.concat(value1, value2, ..., valueN): returns a new array composing of this array and the given arrays or values. For example,
- array.reverse(): reverses the order of elements in the array, the first becomes last. For example,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
0 - array.sort(): sorts the elements in the array. For example, Take note take, by default, number are also sorted based on ASCII/Unicode order. To sort numbers numerically, you can supply a callback comparison function. The function shall take 2 arguments, say
JavaScript Example: Loop
Testing Loop
27 and
JavaScript Example: Loop
Testing Loop
28, and return a negative number if
JavaScript Example: Loop
Testing Loop
29; a positive number if
JavaScript Example: Loop
Testing Loop
30; and 0 if
JavaScript Example: Loop
Testing Loop
31 - array.slice(beginIdx, endIdx): extracts and returns a section of an array from
JavaScript Example: The Date object
62 (inclusive) to
JavaScript Example: The Date object
63 (exclusive). For example, - array.splice(startIdx, countToRemove, insertItem1, insertItem2, ...): removes elements from an array, and insert elements at its place. For example,
- array.indexOf(searchItem[, startIdx]) and array.lastIndexOf(searchItem[, startIdx]): search for the index of the item forward or backward. It returns -1 if item cannot be found. For example,
- .push(): adds one or more elements to the end of an array and returns the resultant length of the array.
- .pop(): removes and return the last element from an array.
- .shift(): removes and returns the first element from an array.
- .unshift(): adds one or more elements to the front of an array and returns the resultant length of the array.
Functional Programming in Filter-Map-Reduce pattern
Arrays also support these iterative methods that iterate through each item of the array, to support functional programming of filter-map-reduce pattern.
- array.forEach(callback): takes a function with an argument which iterates through all the items in the array. NOTE: This syntax is meant to support functional programming of filter-map-reduce pattern.
- array.map(callback): return a new array, which contains all the return value from executing
JavaScript Example: Loop
Testing Loop
34 on each item. For example, - .filter(callback): return a new array, containing the items for which
JavaScript Example: Loop
Testing Loop
34 returned My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26. For example, - array.every(callback): return
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if
JavaScript Example: Loop
Testing Loop
34 returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 for ALL items. - array.some(callback): return
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if
JavaScript Example: Loop
Testing Loop
34 returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 for at least one item in the array.
For detailed specification and examples about a built-in object, check "Core JavaScript References".
Associative Arrays of Key-Value Pairs
An associative array is an array of key-value pair. Instead of using numbers 0, 1, 2,... as keys as in the regular array, you can use anything as key in an associative array. Associative arrays are used extensively in JavaScript and jQuery.
JavaScript does not support native associative array (it actually does not support native array too). In JavaScript, associative arrays (and arrays) are implemented as objects (to be elaborate later).
You can create an associative array via the Object Initializer. For example,
Take note that Array initializer uses square brackets
JavaScript Example: Loop
Testing Loop
43; while object initializer (for associative array) uses curly brackets
JavaScript Example: Loop
Testing Loop
44.Functions
Functions are useful:
- when you have to use the same codes several times.
- as the JavaScript event handler.
- make your program easier to read and understood.
A function accepts zero or more arguments from the caller, performs the operations defined in the body, and returns zero or a single result to the caller.
Functions are objects in JavaScript (to be discussed later).
The syntax for user-defined function is:
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
1Functions are declared using the keyword
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
88. Unlike Java/C/C++, you do not have to specify the return-type and the types of the arguments because JavaScript is loosely typed. You can use a
JavaScript Example: Loop
Testing Loop
46 statement to return a single piece of result to the caller anywhere inside the function body. If no
JavaScript Example: Loop
Testing Loop
46 statement is used (or a
JavaScript Example: Loop
Testing Loop
46 with no value), JavaScript returns
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18.For client-side JavaScript, functions are generally defined in the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
9 section, so that it is always loaded before being invoked.To invoke a function:
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
2Client-Side JavaScript Function Examples
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
3Function's
JavaScript Example: Loop
Testing Loop
51
Function has access to an additional built-in variable called
JavaScript Example: Loop
Testing Loop
51 inside its body, which is an array containing all the arguments. For example,Pass by Value vs. Pass by Reference
In JavaScript, primitive arguments are passed by value. That is, a copy of the variable is made and passed into the function. On the other hand, objects (including array and associative array) are passed by references. That is, if you modify the content of an object inside the function, the "copy" outside the function is also affected.
The Default Function Arguments
JavaScript lets you invoke a function omitting some trailing arguments. It sets the omitted arguments to the value
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18. For example,You can use this feature to provide default value to function argument, for example,
In the above example, we allow caller to omit the trailing arguments (
JavaScript Example: Loop
Testing Loop
54,
JavaScript Example: Loop
Testing Loop
55) or pass a My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21 value (which is a special literal for unallocated object).The common idiom in practice today is to use the short-circuited OR expression (as in
JavaScript Example: Loop
Testing Loop
55) to provide default value if no value (
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18 or My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21) is passed, provided the valid inputs cannot be My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
27,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
49,
JavaScript Example: The Date object
88, and
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
91 that evaluate to My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
27.(ES6) Function with Default Parameter Values
ES6 greatly simplify the above by introducing default parameter value in the form of
JavaScript Example: Loop
Testing Loop
65. For example,(ES6) Rest/Spread Operator (
JavaScript Example: Loop
Testing Loop
5) and Arrow-Function Notation
ES6 also introduces rest/spread operator (
JavaScript Example: Loop
Testing Loop
5) and arrow-function notation. See ES6 article.Anonymous (Inline) Functions
In JavaScript, you can define an anonymous function (without a function name) using the following syntax:
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
4Anonymous function is often used in event handlers and others.
Function Variables
In JavaScript, a variable can hold a primitive (number, string, boolean) or an object.
In JavaScript, functions are first-class object. Hence, a variable can also hold a function object. For example,
Two Ways in defining a function
As seen in the above example, there are two ways to define a function:
- Use a function declaration statement in the form of:
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
5 - Use a function expression by assigning an anonymous function to a variable:
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
6
Functions as Arguments
Recall that a function takes zero or more arguments from the caller. In JavaScript, arguments can be a primitive or object. Since functions are first-class objects in JavaScript, a function may take another function as its argument.
For example, the following function take a function and an array as its arguments, and apply the function to the array.
Nested Functions
In JavaScript, you can define a function inside a function. For example,
Function as the return value
You can return a function from a function. For example,
Interacting with Users
Client-side JavaScript provides these built-in top-level functions for interacting with the user:
- alert(str): Pop-up a box to alert user for important information. The user will have to click "OK" to proceed. The
for ( initialization ; test ; post-processing ) {
body ;
}
8 returns nothing (or
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18). - prompt(str, defaultValue): Pop-up a box to prompt user for input, with an optional
JavaScript Example: Loop
Testing Loop
70. The My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
15 returns the user's input as a string. For example, - confirm(str): Pop-up a box and ask user to confirm some information. The user will have to click on "OK" or "Cancel" to proceed. The
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
16 which returns a boolean value. For example, - document.write(str), document.writeln(str): Write the specified string to the current document. The
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
57 (write-line) writes a newline after the string, while My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
85 does not. Take note that browsers ignores extra white spaces, including newlines, in an HTML document, and treat newline as a single blank character. You need to write a My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
60 or My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
59 tag to ask the browser to display a line break.
The following top-level built-in functions are available to client-side as well as server-side (or standalone):
- console.log(value): write to the system (or error) console, used mainly for debugging.
Other Top-level Built-in Functions
JavaScript also pre-defines the following top-level global functions.
- parseInt(str), parseFloat(str): parses the given
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
3 and returns the numeric value or
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
91 (Not-A-Number). The
JavaScript Example: Loop
Testing Loop
79 accepts an optional
JavaScript Example: Loop
Testing Loop
80 (or base). For example, - Number(object): returns the number representation of the object. It works for
JavaScript Example: Loop
Testing Loop
81 object, as well as many objects such as My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
43. - isFinite(number): returns
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74 is not
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
91,
JavaScript Example: Loop
Testing Loop
86 or
JavaScript Example: Loop
Testing Loop
87. - isNaN(number): returns
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if number is
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
91. Useful for checking the output of
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
77 and
JavaScript Example: The Date object
29. - eval(codes): evaluate the given JavaScript codes, which could be an expression or a sequence of statements. For example: [TODO]
- encodeURI(), decodeURI(), encodeURIComponent(), decodeURIComponent(): encode or decode name-value pairs for the HTTP request, by replacing special characters with
JavaScript Example: Loop
Testing Loop
92. For example: [TODO]
An Introduction to Events (for Client-side JavaScript)
Client-side JavaScript are often event-driven. That is, a function (called event handler) will be fired in response to a certain user's or browser's action that generates an event.
The commonly-used events are:
JavaScript Example: Loop
Testing Loop
93: generated when the user clicks on an HTML element.
JavaScript Example: Loop
Testing Loop
94,
JavaScript Example: Loop
Testing Loop
95: generated when the user positions the mouse pointer inside/away from the HTML element.alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
03,
JavaScript Example: Loop
Testing Loop
97: generated after the browser loaded a document, and before the next document is loaded, respectively.
The event handler, called
JavaScript Example: Loop
Testing Loop
98 (such as My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
82, for ( initialization ; test ; post-processing ) {
body ;
}
00, My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
94), is the function that responses to an event. The event handler is typically attached to the target HTML tag, e.g.,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
7More about events in the later sections.
Objects
Objects are Everywhere!
JavaScript is object-oriented (OO), and objects are everywhere in JavaScript. Arrays are objects. Functions are also objects. Primitives like string and number are auto-box to objects in many operations. Almost everything in JavaScript can be an object, possibly except the
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18 and My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21 (unallocated object)!It is crucial to understanding objects to be proficient in JavaScript, as they are everywhere, and they are used extensively in JavaScript plug-ins like jQuery, AngularJS, React, and etc.
JavaScript, however, does not support all the OO features, so as to keep the language simple.
Properties and Methods
In conventional object-oriented programming languages (like Java/C++/C#), an object is a collection of properties and methods under a common name.
- Properties (also called variables, attributes): contains values associated with the object.
- Methods (also called operations, functions): contains actions that the object can perform.
For example, a
for ( initialization ; test ; post-processing ) {
body ;
}
04 object has properties such as for ( initialization ; test ; post-processing ) {
body ;
}
05, for ( initialization ; test ; post-processing ) {
body ;
}
06, for ( initialization ; test ; post-processing ) {
body ;
}
07, for ( initialization ; test ; post-processing ) {
body ;
}
08; and methods such as for ( initialization ; test ; post-processing ) {
body ;
}
09, for ( initialization ; test ; post-processing ) {
body ;
}
10, for ( initialization ; test ; post-processing ) {
body ;
}
11, for ( initialization ; test ; post-processing ) {
body ;
}
12.Unlike full-fledged OO languages, JavaScript is designed on a simple OO paradigm. A JavaScript object is simply a collection of properties. A property is an association between a key (or name) and value (i.e., key-value pair or name-value pair). If the value is a function (recall that JavaScript functions are first-class objects that can be assigned to variables), the property is known as a method. In other words, JavaScript does not differentiate between properties and methods like conventional OO languages. A method is simply a property holding a function.
Creating Objects via Object Initializer with Object Literal
You can create a new object by directly assign an object literal to a variable, known as Object Initializer. The syntax is as follows:
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
8- A JavaScript object is a collection of properties. Each property is an association of a name (key) and value pair.
- The name and value are separated by a colon
for ( initialization ; test ; post-processing ) {
body ;
}
13. - The name-value pairs are separated by commas
JavaScript Example: Loop
Testing Loop
24. No comma is needed after the last name-value pair. - The property name could be a string or a number. For string name which is NOT a valid identifier (an valid identifier begins with an alphabet, underscore or dollar sign; and does not containing special characters like blank or
for ( initialization ; test ; post-processing ) {
body ;
}
15), you need to enclose the name with single or double quotes. Otherwise, the quotes are optional. For example, Take note that if the property name's string is a proper identifier, you can omit the quotes. This is commonly practiced by the developers. - The property value could be a literal, a variable or an expression.
- A property's value could take all JavaScript types, including primitives (string, number, boolean), object or function. The property is known as a method, if it holds a function. JavaScript does not differentiate between variables and methods like conventional OO languages (Java/C++/C#). A method is simply a property holding a function.
- Objects created via Object Initializer are instances of class
for ( initialization ; test ; post-processing ) {
body ;
}
16.
Trailing Commas
Trailing commas (sometimes called "final commas") can be useful when adding new elements, parameters, or properties to JavaScript code. If you want to add a new property, you can add a new line without modifying the previously last line if that line already uses a trailing comma. This makes version-control diffs cleaner and editing code might be less troublesome. JavaScript has allowed trailing commas in array literals since the beginning, and later added them to object literals (ES?), and more recently, to function parameters (ES?) and to named imports and named exports (ES?).
Property Accessors: The Dot and Index (Square Bracket) operator
In JavaScript, you can access an object's properties via either:
- The dot (
for ( initialization ; test ; post-processing ) {
body ;
}
17) operator: in the form of for ( initialization ; test ; post-processing ) {
body ;
}
18 or for ( initialization ; test ; post-processing ) {
body ;
}
19, just like Java/C++. - The index
JavaScript Example: The Date object
65 operator (or bracket notation): In JavaScript, you can also use the index operator to access the object properties, in the form for ( initialization ; test ; post-processing ) {
body ;
}
21, just like accessing an array item.
The if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
95 operator
You can remove a property (including method) via "
for ( initialization ; test ; post-processing ) {
body ;
}
23".Operator for ( initialization ; test ; post-processing ) {
body ;
}
24
You can use the
for ( initialization ; test ; post-processing ) {
body ;
}
24 operator to check if a particular instance belongs to a particular class of objects, e.g.,The for ( initialization ; test ; post-processing ) {
body ;
}
26 method
The
for ( initialization ; test ; post-processing ) {
body ;
}
27 returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if for ( initialization ; test ; post-processing ) {
body ;
}
29 has the specific for ( initialization ; test ; post-processing ) {
body ;
}
30.Operator for ( initialization ; test ; post-processing ) {
body ;
}
31
You can use the
for ( initialization ; test ; post-processing ) {
body ;
}
31 operator to check if a particular property belongs to an object, for example,Example 1: A Simple Object, Deleting and Adding Properties
Unlike Java/C++, you can delete or add new properties to an existing JavaScript object.
Example 2: An Object having Object Properties
An object's property can hold primitives (number, string). It can also hold an object.
Example 3: An object with function
A JavaScript object's property can also hold a function (or method). You can assign to an anonymous function or a named function as shown in the following example.
To quote or not to quote the name in name-value pair?
The
for ( initialization ; test ; post-processing ) {
body ;
}
33 (of the for ( initialization ; test ; post-processing ) {
body ;
}
34 pair) can take a string or a number, e.g., for ( initialization ; test ; post-processing ) {
body ;
}
35.Many developers do not enquote the string
for ( initialization ; test ; post-processing ) {
body ;
}
33, if it is a valid identifier (a valid identifier begins with an alphabet, for ( initialization ; test ; post-processing ) {
body ;
}
37 or for ( initialization ; test ; post-processing ) {
body ;
}
38; and does not contain special characters like blank and for ( initialization ; test ; post-processing ) {
body ;
}
15). For example, for ( initialization ; test ; post-processing ) {
body ;
}
40 is the same as for ( initialization ; test ; post-processing ) {
body ;
}
41. However, you need to enquote a string for ( initialization ; test ; post-processing ) {
body ;
}
33 if it is NOT a valid identifier, e.g., for ( initialization ; test ; post-processing ) {
body ;
}
43.The string
JavaScript Example: The Date object
95 must be enquoted; otherwise, it will be treated as a variable name.Dot Operator vs. Index (Square Bracket) Operator
You can access an object's property via either dot operator or index operator. Dot operator is commonly used as it is more concise and used in conventional OO languages. But index operator allows access to properties containing special characters and selection of properties using variables, which is not feasible with dot operator. For example,
Iterate through all the properties of an Object
There are three ways to iterate through all properties of an object:
- for...in: traverses all enumerable properties of an object and its prototype chain.
- Object.keys(obj): return an array of all enumerable property names.
- Object.getOwnPropertyNames(obj): return an array of all property names.
For example,
Operator for ( initialization ; test ; post-processing ) {
body ;
}
45
Establishes the default object for a set of statements. The syntax is:
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
9The My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21 vs
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18 Literal Values
As discussed earlier:
- An undeclared variable has type of
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18, and its value cannot be referenced. - A declared but uninitialized variable has type of
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18, with a special literal value of
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18 too. [
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18 is both a type and a literal value!] - A unallocated object has a special literal value of
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21. Take note that My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21 is an object!
In boolean expressions, both the
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21 and
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18 evaluate to My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
27 (together with empty-string
JavaScript Example: The Date object
13, number
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
49 and
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
91, and boolean My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
27). To check for My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21 value, use for ( initialization ; test ; post-processing ) {
body ;
}
62, as for ( initialization ; test ; post-processing ) {
body ;
}
63 (or
JavaScript Example: The Date object
93) returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 for My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
18,
JavaScript Example: The Date object
13,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
49,
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
91, and My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
27Built-in JavaScript Objects
JavaScript provides many useful global objects, such as
JavaScript Example: Loop
Testing Loop
20, My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
43,
JavaScript Example: Loop
Testing Loop
81, and
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
89.I shall discuss some commonly used objects here. For detailed specification and examples about a built-in object, check "Core JavaScript References".
Creating an Object via Constructor and the My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 Operator
All the built-in objects define a so-called constructor, which is a special method having the same name as the object, for creating new instances. To invoke the constructor, you need to use a special
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 operator.For example, the
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
43 object has a constructor method called for ( initialization ; test ; post-processing ) {
body ;
}
79. To construct a new instance of My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
43 object:The
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
31 and for ( initialization ; test ; post-processing ) {
body ;
}
24 Operators
As seen from the above examples, the
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
31 operator returns the type of a value, which can be a primitive type (such as number, string, boolean) or object (including function).The
for ( initialization ; test ; post-processing ) {
body ;
}
24 operator check if the value is an instance of a class.The
JavaScript Example: The Date object
43 and for ( initialization ; test ; post-processing ) {
body ;
}
86 Methods
The following methods are available to all built-in JavaScript objects:
The
JavaScript Example: Loop
Testing Loop
20 Object and Associative Arrays
For an introduction to arrays, read the "" section.
Nowadays, we usually create an array via Array Initializer in the form of
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
84. Nonetheless, as arrays are objects of class
JavaScript Example: Loop
Testing Loop
20, we could also construct an array by invoking the for ( initialization ; test ; post-processing ) {
body ;
}
91 constructor with the My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 operator. This is more complex and, hence, less commonly used today (but may show up in old codes and books).For example,
An Associative Array is a Generic "Object", not an "Array" Object
For an introduction to arrays, read the "" section.
JavaScript does not really support associative array, but allow you to add properties to an object, using the associative array syntax and index operator. In other words,
Using an Array Object for Associative Array
In JavaScript, we usually create an associative array using a generic object (via the Object Initializer). You can also create an associative array via
JavaScript Example: Loop
Testing Loop
20 constructor. For examples,In this case, additional properties are added into an
JavaScript Example: Loop
Testing Loop
20 object as object's properties. The array has if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
93 of 0, as if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
93 reflects only the numerical indexes! Using an array object for associative array is not recommended. I describe here for completeness.The
JavaScript Example: Loop
Testing Loop
81 Object vs
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30 Primitive Type
JavaScript provides primitive
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30 type. It also provide a
JavaScript Example: Loop
Testing Loop
81 class as a wrapper class for primitive
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30. Read "" for primitive
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30.A string can be created in two ways:
- directly assigned a string literal in the form of
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
03 or
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
04 to a variable, resulted in a
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30 primitive. - invoke the
JavaScript Example: Loop
Testing Loop
81 object constructor to construct a
JavaScript Example: Loop
Testing Loop
81 object.
For examples,
The former is a primitive
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30, while the latter is a
JavaScript Example: Loop
Testing Loop
81 object.
JavaScript Example: Loop
Testing Loop
81 object is a wrapper for primitive string, which provides many useful methods for manipulating strings. See "".A
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
30 primitive is "auto-box" to a
JavaScript Example: Loop
Testing Loop
81 object, when you invoke a
JavaScript Example: Loop
Testing Loop
81 object's methods. For example,The
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
89 Object vs My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74 Primitive Type
JavaScript provides primitive
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74 type. It also provide a
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
89 class as a wrapper class for primitive My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74. Read "" for primitive My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74.The
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
89 object is a wrapper object for primitive My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74, which provides many properties and methods. Again, a My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
74 primitive is auto-box to a
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
89 object, when you invoke a
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
89 object's operation. See "".The
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
25 Object vs boolean
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
26 Type
JavaScript provides primitive
JavaScript Example: The Date object
78 type. It also provide a
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
25 class as a wrapper class for primitive
JavaScript Example: The Date object
78. Read "" for primitive
JavaScript Example: The Date object
78.The
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
25 object is a wrapper object for primitive
JavaScript Example: The Date object
78, which provides many properties and methods.The My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
43 Object
Commonly-used constructors:
- new Date(): constructs a
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
43 object with the current date and time. - new Date(dateTimeStr): constructs a
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
43 object with the given date-time string in an acceptable form (e.g., "Month, day, year, hours:minutes:seconds"). - new Date(year, Month, day): where month is 0-11 for Jan to Dec.
- new Date(year, Month, day, hours, minutes, seconds, milliseconds)
Commonly-used methods:
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
62, setDate(), getMonth(), setMonth(), getFullYear(), setFullYear(): get/set the date (1-31), month (0-11 for Jan to Dec), year (4-digit year).- getDay(): get the day of the week (0-6 for Sunday to Saturday).
- getHours(), setHours(), getMinutes(), setMinutes(), getSeconds(),
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
37: get/set the hours/minutes/seconds. - getTime(), setTime(): get/set the number of milliseconds since January 1, 1970, 00:00:00.
The
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
38 Object
Commonly-used properties:
Commonly-used methods:
- abs(x)
- sin(a), cos(a), tan(a), asin(x), acos(x), atan(x), atan2(x,y)
- cell(x), floor(x), round(x)
- exp(x), log(x), pow(base,exp), sqrt(x)
- max(x,y), min(x,y)
- random(): returns a pseudo-random number between 0 and 1.
The
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40 Object
For an introduction to functions, read "" section.
Every function in JavaScript is actually a
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40 object!Function Variable
A variable can be assigned a
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40 object (called function variable), which takes a special object type called My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
88. [In JavaScript, an object's type is either My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
88 (for
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40 object) or
JavaScript Example: Variables and functions prompt() and confirm()
Welcome to JavaScript!
20 (for any object not a
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40).]For example,
Anonymous Function
If a function is called only once, you can use an anonymous function, omitting the function name. Anonymous functions are commonly-used as event handler, e.g.,
You can define a inline (anonymous) function and assign it to a variable as follows:
Function Constructor
Besides using
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
88 keyword, you can also use the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40 constructor (with My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 operator) to define a
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40 object. This is not easily understood and, hence, not recommended.The syntax for
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40 constructor is:
JavaScript Example: The Date object
0The
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
53 object
Formatting Console Output
console.log('formattingStr', arg1, arg2, ...): You can use C's
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
14-like syntax with format specifiers (such as
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
55,
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
56,
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
57) to format the output string.You can use %c to apply CSS rules, e.g.,
JavaScript Example: The Date object
1Logging Methods
JavaScript supprots 5 levels of logging, in the order of severity:
- console.error():
- console.warn():
- console.log():
- console.info():
- console.debug():
More Debugging Methods
- console.trace(): print the current stack trace.
- console.dir(): displays an interactive list of the properties of the specified JavaScript object.
- console.dirxml(): displays in XML the properties of the specified JavaScript object.
- console.assert(): writes an error message to the console if the assertion is false; otherwise do nothing.
Time Measurements
- console.time([label]): starts a new timer.
- console.timeEnd([label]): ends the timer and returns the time in milliseconds since the timer starts.
- console.timeLog([label]): returns the elapsed time since the timer started.
More on Objects
Prototype-based vs. Class-based OO
JavaScript's OO is prototype-based, instead of class-based like Java/C++/C#.
A class-based OO language (such as Java/C++/C#) is founded on concepts of class and instance. A class is a blue-print or template of things of the same kind. An instance is a particular realization of a class. For example, "
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
58" is a class; and "
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
59" and "
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
60" are instances of the "
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
58" class. In a class-based OO language, you must first write a class definition, before you can create instances based on the class definition. The instances created have exactly the same properties and methods as the class - no more, and no less.On the other hand, a prototype-based OO language (such as JavaScript) simply has objects (or instances). A new object can be constructed based on an existing object as prototype. There is no class definition, and hence, they are also called class-less OO languages.
In JavaScript:
- Every JavaScript object has a prototype. The prototype is also an object. A JavaScript object is created from a prototype object and gets its initial properties from the prototype.
- Every JavaScript object has an internal property called
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62, which holds its prototype object. When you define a new object, its
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 is set to a built-in object called
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
64. In other words, the new object uses
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
64 as its prototype, and gets its initial properties from
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
64. The
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 property is not enumerable, i.e., it would not shown up in the if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
77 loop.
Example: Object Prototype
Notes:
- Prototype Chain: In the above example,
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
69's prototype is
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
64, whose prototype is My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
21. This form a prototype chain of
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
72.
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
69 defines two own properties:
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
74 and
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
75. When you invoke
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
76, which cannot be found in
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
69, but found in its prototype. - Object.getPrototypeOf(obj): Instead of using
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
78 property used in above example, which is NOT in the official JavaScript specification, you should use
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
79 method to get the prototype of an object.
Defining Your Own Custom Objects via a Constructor
In JavaScript, you can create your own custom objects by defining a constructor. A constructor is simply a function, which can be invoked via the
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 operator to create and initialize new objects. Recall that JavaScript is prototype-based and class-less. A new object is created from a prototype object, and gets its initial properties from this prototype object. The constructor function provides the prototype to create and initialize new instances (to be explained later).By convention, a constructor name begins with an uppercase letter.
Keyword alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
09
"
alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
09" refers to the current object.
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
83 refers to the property of this object.Example: Object Constructor Function
Let us define a constructor for our custom
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
84 objects, with properties
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
74,
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
86,
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
87 and
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
88.How it Works?
- Properties (including methods) are declared inside the constructor via
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
83, which can then be initialized. - Methods can be declared inside the constructor via
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
90. There are a few ways to provide the method's definition:- Define an ordinary
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
88, and assign the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
92 (without parentheses, which is a My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
88 type) to
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
90, as in the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
88. - Assign
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
90 to an inline function, as in the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
87. - Invoke the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
40 constructor with My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 operator (rarely-used):
JavaScript Example: The Date object
2
- To invoke a method, use
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
00. - The
JavaScript Example: The Date object
43 is a special method, which returns a string description of this object. The
JavaScript Example: The Date object
43 will be implicitly invoked if an object is passed into the for ( initialization ; test ; post-processing ) {
body ;
}
9, My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
56 or My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
00 operator (like Java).
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 and
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
07
Revisit the My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 Operator
In JavaScript, the new constructor(args) call does the followings:
- Create a new generic object using built-in root
for ( initialization ; test ; post-processing ) {
body ;
}
16 as prototype. - Assign this newly created object to
alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
09 variable. - Run the constructor function, which typically adds properties to
alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
09. - Set the internal property
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 to
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
13 (in the above example,
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
14). The
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 property is not enumerable (i.e., it would not shown up in the if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
77 loop). It is used to maintain the so called "prototype chain" of the objects. - Return the newly created object.
Take note that you can invoke the constructor function WITHOUT the
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 operator, e.g.,
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
18. In this case, the constructor will be run as per ordinary function. There will not be any association of alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
09 and
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 properties; and the return value will depend on the function codes.Try tracing the object created in the above example via Chrome's Developer Tools, which could display the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 internal property.Another Example
Constructor's
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
07 Property
All the JavaScript constructor function objects (in fact, all function objects) have a special property called
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
07. By default, it holds an object that can be used as a prototype for creating new objects.In the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
84 example, the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
84 constructor function has a
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
14, which holds a
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
84 object to be used as a prototyping object. When a new
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
84 object is constructed via the My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
47 operator, the newly constructed object's
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 property is set to
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
14.Adding Shared properties to Constructor's
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
07 Property
The constructor's
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
07 is used to implement shared properties (typically shared methods) for all the objects it prototyped. In JavaScript, you can add properties dynamically during runtime into
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
07. The added properties/methods will be available to all the objects (new as well as existing objects). For example,When you reference a property, JavaScript first checks if the property exists locally (or own property); otherwise, it checks the prototype chain through the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 property. Recall that the
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
36 call sets the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 to
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
13. Hence, properties added into
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
13 are available to (and shared by) all the objects prototyped by this constructor.In practice, we defines methods (and static variables) in
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
13 to be shared by all objects; while each object maintains its own properties (instance variables).Looking up the Prototype Chain
Objects in JavaScipt form prototype chains. In the above example, a prototype chain is
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
41.When you reference an object property, JavaScript follow these steps to locate the property:
- Check if the property exists locally (i.e., own property).
- Otherwise, check the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 property. This continues recursively up the prototype chain. The process is called "lookup in the prototype chain".
Hence, in the above example, all the properties in
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
14 and
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
64 are inherited by
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
45.for ( initialization ; test ; post-processing ) {
body ;
}
24 Operator
Every object has a
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 object property (except for ( initialization ; test ; post-processing ) {
body ;
}
16); every constructor function has a
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
07 property. So objects can be related by 'prototype inheritance' to other objects. You can test for inheritance by comparing an object's
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 to the constructor's
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
07. JavaScript provides a shortcut: the for ( initialization ; test ; post-processing ) {
body ;
}
24 operator tests an object against a function and returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if the object inherits from the function prototype. For example,[TODO]
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
54
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
54 lets you create a new object based on the given prototype object. It simply sets the
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
62 to the given prototype object, so that all properties of the prototype are available to the new object. Using
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
54, You do NOT need to define a constructor function and run
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
58 to create new objects.Inheritance via Prototype Chain
You can implement inheritance in JavaScript via the prototype chain. For example,
How It Works
[TODO]
Getter and Setter
In languages like Java, you can declare a variable to be
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
59 and define
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
60 getter/setter to access the
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
59 variable. JavaScript does not really support
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
59 access?! But you can also define ordinary methods
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
63 or
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
64 as getter/setter like Java.Moreover, in JavaScript, you can define getter/setter as properties instead of methods in one of the following two ways:
- via built-in functions
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
65 or
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
66; - inside the "object initializer" via keywords
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
67 and
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
68.
Example 1: Define Getters/Setters via
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
65 or
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
66
Notes:
- The
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
71 allows you to define multiple properties; while
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
72 for a single property. - You invoke the getters/setters like properties with assignment operator, instead of via function call.
Example 2: Define Getter/Setter inside the Object Initializer
Notes:
- The getter/setter are defined inside Object Initializer via keywords
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
67 and
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
68 with a rather strange syntax, as shown in the example.
for ( initialization ; test ; post-processing ) {
body ;
}
16's Properties
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
76
All JavaScript objects inherited a special property called
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
77, which contains a reference to the function that created the object. For example,[TODO] more Object's properties
Document Object Model (DOM) API for JavaScript
Document Object Model (DOM), is a standard API that allows programmers to access and manipulate the contents of an HTML/XHTML/XML document dynamically inside their program. It models an HTML/XHTML/XML document as an object-oriented, tree-like structure, known as a DOM-tree, consisting of nodes resembling the tags (elements) and contents. DOM also provides an interface for event handling, allowing you to respond to user's or browser's action.
DOM API is implemented in many languages such as Java, JavaScript, Perl, and ActiveX. DOM API specification is maintained by W3C. DOM has various levels:
- DOM Level 0 (DOM0) (Pre-W3C): obsolete
- DOM Level 1 (DOM1) (W3C Oct 1998): obsolete
- DOM Level 2 (DOM2) (W3C Nov 2000) and DOM Level 2 HTML (HTML DOM2) (W3C Jan 2003)
- DOM Level 3 (DOM3) (W3C Apr 2004): yet to be fully supported by browsers.
jQuery is much better in selecting and manipulating DOM element. You should use jQuery in production. I keep these sections here for completeness.
Finding and Selecting Elements
In JavaScript, we often use DOM API to select elements within the current document, so as to access or manipulate their contents. The most commonly-used functions are:
FunctionDescriptionExample
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
78Returns the element with the given unique alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
19.
JavaScript Example: The Date object
3
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
80Returns an array of elements with the given tag name.
JavaScript Example: The Date object
4
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
81Returns an array of elements with the given
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
82 attribute name.
JavaScript Example: The Date object
5
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
83Returns an array of elements with the given for ( initialization ; test ; post-processing ) {
body ;
}
33 attribute.
JavaScript Example: The Date object
6You can use wildcard
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
85 in
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
86 to select all the elements, e.g.,
JavaScript Example: The Date object
7The above functions select element(s) based on the unique
alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
19, for ( initialization ; test ; post-processing ) {
body ;
}
33 attribue and tag-name. HTML 5 further defines two function that can select elements based on
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
82 attribute (which is used extensively by CSS in the class-selector):FunctionDescriptionExample
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
90Returns the first element with the given
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
82 attribute.
JavaScript Example: The Date object
8
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
92Returns an array of elements with the given
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
82 attribute.
JavaScript Example: The Date object
8Beside the above selection functions, there are many other selection functions available. However, I strongly recommend that you stick to the above functions. I listed below the other function below for completeness.
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
94 returns an array of all
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
95 elements, same as
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
96.
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
97: return an array of allelements.
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
98 and
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
99: return all the hyperlinks
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
6and anchors
JavaScript Example: User-defined function and onclick Event Handler
Example on event and user-defined function
6elements. [To confirm!]
Manipulating Element's Content through the alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
42 Property
You can access and modify the content of an element via the "
alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
42" property, which contains all the texts (includes nested tags) within this element.For example,
"
alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
42" is the most convenient way to access and manipulate an element's content. However, it is not a W3C standard, but it is supported by most of the browsers.DOM Tree & Nodes
W3C recommends that you access and manipulate HTML elements via the DOM tree and nodes. However, it is really an overkill for writing simple JavaScripts. I present them here again for completeness.
When a browser loads an HTML page, it builds DOM models a web page in a hierarchical tree-like structure composing of nodes, resembling its HTML structure.
An example of an HTML document with the corresponding DOM-tree is given follow. Take note that the text content of an element is stored in a separate Text node.
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
0Load the web page onto Firefox, and use the firebug to inspect the DOM tree.
A DOM-tree comprises the following types of nodes:
- Document Node: the root node representing the entire HMTL document.
- Element node: represents an HTML element (or tag). An element node may have child nodes, which can be either element or text node. Element node may also have attributes.
- Text Node: contains the text content of an element.
- Others: such as comment, attribute.
A DOM node has these properties:
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
005: contain the name of the node, which is read-only. The My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
005 for an Element node is the tag-name; My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
005 for the Document node is My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
008; My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
005 for Text nodes is My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
010.My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
011: contain the value of the node. My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
011 for Text node is the text contained; My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
011 for Element node is undefined.My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
014: an integer indicating the type of the node, e.g., Element (1), Attribute (2), Text (3), Comment (8), Document (9).My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
015: reference to parent node. There is only one parent node in a tree structure.My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
016: array (or node-list) of child nodes.My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
017, My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
018: reference to the first and last child node.My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
019, My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
020: reference to the previous and next sibling in the same level.
Take note of the difference between singular and plural terms. For example,
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
015 refer to the parent node (each node except root has one and only one parent node), My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
016 holds an array of all the children nodes.The root node of the DOM tree is called
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
6. The root node
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
6 has only one child, called My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
025, representing the tag, and it acts as the parent for two child nodes representing and tags, which in turn will have other child nodes. You can also use a special property called My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
026 to access the tag directly.For example, you can use the following node property to access the Text node
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
027 in the above example:Example
The following JavaScript lists all the nodes in the section, in a depth-first search manner, via a recursive function.
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
1if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
2Accessing the HTML element via Node interface may not be too useful nor practical for JavaScript applications, as you need to know the actual topological structure of the DOM-tree. Furthermore, some browsers (e.g., firefox) may create extra Text nodes to contain the white spaces between tags.
Text Node
DOM models the texts enclosed by HTML tags as a separate text node. It cannot have child node. To retrieve the text content, you could the property
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
011. For example,Attribute Properties
To access an attribute of an Element node called
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
029, you could either use:- property
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
030, where My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
031 is the name of the attribute, or - methods
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
032 and My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
033.
For example,
Attribute My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
034 (for CSS)
Element has a property called style, which models CSS style with CSS properties such as
alert('hello, world')
document.write('hello world, again
')
console.log('hello world, again and again')
07 and My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
036. For example,if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
3Manipulating Nodes
A Node object has these functions:
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
037: returns My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
26 if this node has at least one child node.- Manipulating child node:
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
039: insert a node before an existing child node.My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
040: replace an existing child node.My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
041: remove the specified child node.My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
042: append the given node as the last child.
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
043My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
044:
Creating a New Element (My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
045) and Text Node (My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
046), Appending a Node (My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
047)
To create new text node, you can use
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
048 to create a standalone text-node, followed by an My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
049My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
050 to append the text node to an element.Similarly, you can use
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
051 to create a stand-alone element, followed by an My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
052 to append the created element into an existing element.For example, we shall create a new text node, as a child of a new
element. We shall then append the new
element as the last child of .
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
4Inserting a new Node (My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
053)
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
4Replacing a Node (My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
054)
Change the last line to
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
055.Deleting a Node (My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
056)
You can remove a child node from a parent node via
My First JavaScript says
Hello world, again!
This document was last modified on mm/dd/yyyy hh:mm:ss.
057.For example, let remove the last
from .
if ( condition-1 ) {
block-1 ;
} else if ( condition-2 ) {
block-2 ;
} else if ( condition-3 ) {
block-3 ;
......
......
} else {
block-n ;
}
6The
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
6 object
The
JavaScript Example: Events onload, onmouseover and onmouseout
"Hello" alert Box appears after the page is loaded.
Point your mouse pointer here!!!
6 object is the root node of the DOM-tree. It can be used to access all the elements in an HTML page.
Bagaimana JavaScript dijalankan?
Javascript cenderung sangat cepat karena dijalankan langsung di dalam browser. Selain itu, browser utama sebagian besar mendukung kompilasi JIT (Just In Time), yang berarti tidak perlu mengkompilasi code sebelum menjalankannya.
JavaScript pakai aplikasi apa?
Namun, sebelumnya Anda membutuhkan beberapa aplikasi berikut untuk mendukung Anda belajar Javascript: Web browser (Google Chrome, Firefox, atau lainnya). Teks editor (Atom, Notepad, atau lainnya). Web server, untuk menjalankan kode pemrograman.
Bagaimana cara penggunaan JavaScript dalam HTML?
Anda bisa langsung menambahkan JavaScript di HTML dengan menggunakan tag yang mencakup semua kode JS yang Anda tulis. Kode JS yang bisa ditambahkan: di antara tag di antara
Apakah JavaScript cocok untuk pemula?
JavaScript adalah salah satu bahasa pemrograman populer saat ini. Javascript ini punya banyak keunggulan yang membuatnya cocok untuk pemula. Untuk itu, belajar JavaScript sangat disarankan jika Anda ingin membuat website.