Misy233 CH4
Misy233 CH4
CHAPTER 4
4.1 Overview of JavaScript
• We’ll call collections of JavaScript code scripts, not programs. The parts are
• Core : Operators, expressions, statements and subprograms
• ClientSide : Objects to support HTML (What our course covers)
• ServerSide : Objects to support server, DB Management etc.
4.1 Overview of JavaScript (cont.)
• The Document Object Model makes it possible to support dynamic HTML documents
with JavaScript, allowing it to access and modify CSS properties and contents
4.2 Object Orientation and JavaScript
• Either directly, as in
<script type = "text/javaScript">
--JavaScript script –
</script>
• Language Basics:
• Problem: When the end of the line can be the end of a statement – JavaScript
puts a semicolon there
• Solution : Put every statement on its own line and terminate with “;”
4.4 Primitives, Operations, & Expressions
• All primitive values have one of the five primitive types: Number, String,
Boolean, Undefined, or Null
• Number, String, and Boolean have wrapper objects (Number, String,
and Boolean)
• In the cases of Number and String, primitive values and objects are
coerced back and forth so that primitive values can be treated essentially
as if they were objects
• Numeric literals – just like Java
• All numeric values are stored in double-precision floating point
• String literals are delimited by either ' or “
• Can include escape sequences (e.g., \t)
• All String literals are primitive values
• Eg. ' You are here ' is the same as ' You'\re here '
4.4 Primitives, Operations, & Expressions (cont.)
Example : When a = 7
(++a) * 3 = 24, and a = 8
(a++) * 3 = 21, and a = 8
• The MathObject provides floor, round, max, min, trig functions, etc.
• e.g., Math.cos(x)
Example : Math.round(1.6) returns 2 (rounds to nearest
int)
Math.round(-1.6) returns -2
Math.floor(1.6) returns 1 (Downs to nearest int)
Math.floor(-1.6) returns -2
4.4 Primitives, Operations, & Expressions (cont.)
• The JavaScript model for the HTML document is the Document object
• The model for the browser display window is the Window object
• The Window object has two properties, document and window, which refer
to the Document and Window objects, respectively
• The Document object has a method, write, which dynamically
creates content
• The parameter is a string, often catenated from parts, some of which are
variables
e.g., document.write("Answer: " + result + "<br />");
• The parameter is sent to the browser, so it can be anything that can
appear in an HTML document (<br />, but not \n)
• The Windowobject has three methods for creating dialog boxes :
alert, confirm, and prompt
4.4 Screen Output & Keyboard Input (cont.)
• 1. alert("Hey! \n");
• Parameter is plain text, not HTML
• Opens a dialog box which displays the parameter string and an OK button
• It waits for the user to press the OK button
• 2. confirm("Do you want to continue?");
• Opens a dialog box and displays the parameter and two buttons, OK and
Cancel
• Returns a Boolean value, depending on which button was pressed (it waits for
one)
• 3. prompt("What is your name?", "");
• Opens a dialog box and displays its string parameter, along with a text box and
two buttons, OK and Cancel
• The second parameter is for a default response if the user presses OK without
typing a response in the text box (waits for OK)
4.6 Control Statements
• Switch
switch (expression) {
case value_1:
// value_1 statements
case value_2:
// value_2 statements
…
[default:
// default statements]
}
• The statements can be either statement sequences or compound statements
• The control expression can be a number, a string, or a Boolean
• Different cases can have values of different types
4.6 Control Statements (cont.)
• Loop statements
while (control_expression)
{ statement(s) or command(s) }
• init can have declarations, but the scope of such variables is the whole script
Example :
for(count=0; count =<10; count++) { sum += count }
do { statement(s) or command(s) }
while (control_expression)
4.7 Object Creation and Modification
• Deleting properties
delete myAirplane.model;
• Array methods:
• Join // Converts array into a single string value
e.g., let listStr = [“Paris”, “Rome”];
let listStr = list.join(", "); // Becomes
“Paris,Rome”
• Sort – e.g.,names.sort();
• Coerces elements to strings and puts them in alphabetical order
• Concat // Adds some elements to an existing array and creates a new one
e.g. newList = listname.concat(47, 26);
4.8 Arrays (cont.)
• Array methods:
• Slice(a,b) // returns elements starting from a, up to (and
not inclusive) to b
listPart = list.slice(2, 5); // retrieves 2nd, 3rd and 4th
listPart2 = list.slice(2); // retrieves 2nd and all the rest
• toString
• Coerce elements to strings, if necessary, and catenate them together, separated by commas (exactly
like join(", "))
• push, pop
• Removes/adds elements to/from the end of an array
• Parameters are passed by value, but when a reference variable is passed, the semantics
are pass-by-reference. Arrays can also be passed.
• There is no type checking of parameters, nor is the number of parameters checked
(excess actual parameters are ignored, excess formal parameters are set to undefined)
• All parameters are sent through a property array, arguments, which has the length
property
• There is no clean way to send a primitive by reference
• One dirty way is to put the value in an array and send the array’s name
function by10(a) { a[0] *= 10; }
...
let listx = new Array(1);
...
listx[0] = x;
by10(listx);
x = listx[0];
4.9 Functions (cont.)
• search(pattern) // as a method
• Returns the position in the object string of the pattern (position is relative to zero); returns -1 if it
fails
let str = "Gluckenheimer";
let position = str.search(/n/);
/* position is now 6 */
• Character classes
• Put a sequence of characters in brackets, and it defines a set of characters, any one of which matches
[abcd]
• Dashes can be used to specify spans of characters in a class
[a-z]
• A caret at the left end of a class definition means the opposite
[^0-9] // Matches any character except numbers
[^aei] // Matches any character except a, e, i
4.11 Pattern Matching (cont.)
• Quantifiers
Quantifier Meaning
{n} exactly n repetitions
{m,} at least m repetitions
{m,n} at least m but not more than n repetitions
/xy{4}z/ xyyyyz
4.11 Pattern Matching (cont.)
• Quantifiers
• Other quantifiers (just abbreviations for the most commonly used quantifiers)
• Anchors
• The pattern can be forced to match only at the left end with ^; at the end
with $
e.g.,
/^Lee/
matches "Lee Ann“ but not "Mary Lee Ann"
/Lee Ann$/
matches "Mary Lee Ann",
but not "Mary Lee Ann is nice“
• Pattern modifiers
• Finds a substring that matches the pattern and replaces it with the string (g
modifier can be used)
Example :
var str = "grapes:apples:oranges";
var fruit = str.split(":");
Fruits is not set to [grapes,apples,oranges]
4.12 Debugging JavaScript (Browser dependent)
• Programs create and display messages when errors occur, together with
some descriptions. Scripts, however, displays blank pages or
documents.
• MS IE v.8+
• A script error causes a small window to be opened with an explanation of the
error
• Firefox v.3+
• Select Tools and Error Console
• A small window appears to display script errors
• Remember to Clear the console after using an error message – avoids
confusion