0% found this document useful (0 votes)
3 views24 pages

JavaScript (Part 1)- Introduction

Lecture 10 of COMP519 covers JavaScript as a client-side scripting language, emphasizing its role in creating interactive web pages compared to static HTML/CSS. It discusses the properties of scripting languages, the evolution of JavaScript, its type system, and how it handles type checking dynamically and loosely. The lecture also includes examples of JavaScript code and its integration within HTML documents.

Uploaded by

hafiz15061970
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views24 pages

JavaScript (Part 1)- Introduction

Lecture 10 of COMP519 covers JavaScript as a client-side scripting language, emphasizing its role in creating interactive web pages compared to static HTML/CSS. It discusses the properties of scripting languages, the evolution of JavaScript, its type system, and how it handles type checking dynamically and loosely. The lecture also includes examples of JavaScript code and its integration within HTML documents.

Uploaded by

hafiz15061970
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

COMP519 Web Programming

Lecture 10: JavaScript (Part 1)


Handouts

Ullrich Hustadt

Department of Computer Science


School of Electrical Engineering, Electronics, and Computer Science
University of Liverpool
Contents

1 JavaScript
Motivation
Overview
Example
Scripts
Type Systems and Type Checking

2 Further Reading

COMP519 Web Programming Lecture 10 Slide L10 – 1


JavaScript Motivation

JavaScript: Motivation

• HTML/CSS is sufficient for HTML documents aimed at


disseminating information that does not change too frequently
• HTML documents that remain the same each time they are accessed
are called static web pages
; HTML/CSS is sufficient for static web pages
• In order to develop interactive/reactive web pages we must integrate
programming in some form or another
• One form is client-side programming/scripting:
• Code is written in a separate programming/scripting language
• Code is embedded in the HTML markup of a web page or
linked to from the page and accessible by the web browser
• Code is executed by the web browers (or external run-time environment)
on the user’s device

COMP519 Web Programming Lecture 10 Slide L10 – 2


JavaScript Motivation

Scripting languages

Script
A user-readable and user-modifiable program that performs simple
operations and controls the operation of other programs

Scripting language
A programming language for writing scripts

COMP519 Web Programming Lecture 10 Slide L10 – 3


JavaScript Motivation

Scripting languages: Properties


• Program code is present at run time and starting point of execution
• compilation by programmer/user is not needed
• compilation to bytecode or other low-level representations
may be performed ‘behind the scenes’ as an optimisation
• Presence of a suitable runtime environment is required for the execution
of scripts
• includes an interpreter, or just-in-time compiler, or bytecode compiler plus
virtual machine
• typically also includes a large collection of libraries
• Executation of scripts is typically slower then the execution of code that
has been fully pre-compiled to machine code

COMP519 Web Programming Lecture 10 Slide L10 – 4


JavaScript Motivation

Scripting languages: Properties


• Variables, functions, and methods
typically do not require type declarations
(automatic conversion between types, e.g. strings and numbers)
• Some built-in data structures (more than in C, fewer than in Java)
• Ability to generate, load, and interpret source code at run time
through an eval function
var x = 2;
var y = 6;
var str = " if ( x > 0) { y / x } else { -1 }";
console . log ( eval ( str )); // Output : 3
x = 0;
console . log ( eval ( str )); // Output : -1

COMP519 Web Programming Lecture 10 Slide L10 – 5


JavaScript Motivation

Scripting languages: Properties


• The evolution of a scripting language typically starts
with a limited set of language constructs for a specific purpose
Example: PHP started as set of simple ‘functions’
for tracking visits to a web page
• The language then accumulates more and more language constructs
as it is used for a wider range of purposes
• These additional language constructs may or may not fit well together
with the original core and/or may duplicate existing language constructs
• During this evolution of the language, backward compatibility
may or may not be preserved
; Language design of scripting languages is often sub-optimal

COMP519 Web Programming Lecture 10 Slide L10 – 6


JavaScript Overview

JavaScript
• JavaScript is a language for client-side scripting
• script code is embedded in a web page and
delivered to the client as part of the web page and
executed by the user’s web browser
; code is visible to the user/client
• allows for better interactivity compared to server-side scripting as reaction
time is improved and data exchange with the server can be minimised
• a web browser may not support JavaScript or
the user may have disallowed the execution of JavaScript code
• different JavaScript engines may lead to different results, in particular,
results not anticipated by the developer of JavaScript code
• performance relies on the efficiency of the JavaScript engine and
the client’s computing power

COMP519 Web Programming Lecture 10 Slide L10 – 7


JavaScript Overview

JavaScript
• JavaScript is a language for client-side scripting
• operations that refer to the location of the client are easy:
document . write (" Local time : " + ( new Date ). toString ());

• for security reason, scripts are limited in what they can do,
e.g. scripts cannot access the client’s filestore

COMP519 Web Programming Lecture 10 Slide L10 – 8


JavaScript Overview

JavaScript: History

• originally developed by Brendan Eich at Netscape


under the name Mocha
• first shipped together with Netscape browser in September 1995
under the name LiveScript
• obtained its current name in December 1995 under a deal between
Netscape and Sun Microsystems, the company behind Java,
in December 1995
• does not have a particularly close relationship to Java,
it mixes aspects of Java with aspects of other languages and its own
peculiarities
• is a dialect of ECMAScript, a scripting language standardised in the
ECMA-262 specification and ISO/IEC 16262 standard since June 1997
• other dialects include Microsoft’s JScript and Adobe’s ActionScript

COMP519 Web Programming Lecture 10 Slide L10 – 9


JavaScript Overview

JavaScript: Use

Website Client-Side Server-Side Database


Google JavaScript, C, C++, Go, Java, BigTable, MariaDB
TypeScript Python, PHP
Facebook JavaScript Hack, PHP, Python, MariaDB, MySQL,
C++, Java, . . . HBase, Cassandra
YouTube Flash, C, C++, Python, Java, BigTable, MariaDB
JavaScript Go
Yahoo JavaScript PHP MySQL, PostgreSQL
Amazon JavaScript Java, C++, Perl Oracle Database
Wikipedia JavaScript PHP, Hack MySQL, MariaDB
Twitter JavaScript C++, Java, Scala MySQL
Bing JavaScript C++, C# MS SQL Server
Wikipedia Contributors: Programming languages used in most popular websites. Wikipedia, The Free Encyclopedia,
13 September 2019, at 01:04. http://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites
[accessed 16 September 2019]

COMP519 Web Programming Lecture 10 Slide L10 – 10


JavaScript Example

JavaScript: Hello World!


1 <! DOCTYPE html >
2 < html > < head > < title > Hello World </ title > </ head >
3 < body >
4 <p > Our first JavaScript script </ p >
5 < script >
6 document . writeln (" <p > <b > Hello World ! </b > </p >")
7 </ script >
8 < noscript >
9 JavaScript not supported or disabled
10 </ noscript >
11 </ body > </ html >
• JavaScript code is enclosed in a script-element
• Alternative HTML markup that is to be used in case JavaScript is not
enabled or supported by the web browser, can be specified in a
noscript-element
• File must be stored in a directory accessible by the web server, for
example $HOME/public_html, and be readable by the web server
COMP519 Web Programming Lecture 10 Slide L10 – 11
JavaScript Scripts

JavaScript scripts
• JavaScript scripts are embedded into HTML documents and are
enclosed in a script-element
• A JavaScript script consists of one or more statements and comments
; there is no need for a main function (or classes)
• Statements do not have to end in a semicolon but they can
; stick to one convention in your code
• Whitespace before and in-between statements is irrelevant
(This does not mean it is irrelevant to someone reading your code)
• One-line comments start with // and run to the end of the line
// This is a single - line comment .

• Multi-line comments are enclosed in /* and */


/* This is a multi - line comment . The syntax could also
be used for a comment that is only one line long . */

• Comments should precede the code they are referring to

COMP519 Web Programming Lecture 10 Slide L10 – 12


JavaScript Type Systems and Type Checking

JavaScript: Type System


• JavaScript is a dynamically and loosely typed language
• All programming language provide operations that can be performed
• Most programming languages provide
• values (as separate from operations)
• variables to store values in
• user-defined operations (functions)
• parameters as special kind of variables used in the definition of an operation
to refer to an argument of the operation
• Most programming languages categorise values and operations
according to type

Data Type / Datatype / Type


A set of computer represented values together with a set of operations
that can be performed on those values

Value Type
COMP519 Web Programming Lecture 10 Slide L10 – 13
JavaScript Type Systems and Type Checking

Type Systems and Type Checking

Type System
A set of rules that determines the type of a value, variable, operation,
expression possibly taking into account type declarations for variables and
operations

Type Error
A failure of a type system to determine the type of a value, variable,
operation, expression

Type Checking
The process of checking that a ‘program’ complies with the type system of
its language

COMP519 Web Programming Lecture 10 Slide L10 – 14


JavaScript Type Systems and Type Checking

Type Systems and Type Checking


• JavaScript is a dynamically and loosely typed language

Statically typed programming language


Type checking is performed before program execution, e.g., by a compiler

Dynamically typed programming language


Type checking is performed during program execution when statements
are executed / expressions are evaluated

Strongly typed programming language


Each value has exactly one type and operations can only be applied to
argument values of the correct type

Loosely/Weakly typed programming language


A value of one type can be treated as being of another type
(or is automatically converted to the type required by an operation)
COMP519 Web Programming Lecture 10 Slide L10 – 15
JavaScript Type Systems and Type Checking

Type Systems and Type Checking


Statically typed programming language
Type checking is performed before program execution, e.g., by a compiler

Example: Java is a statically typed programming language


import java . io .*;

public class TEE {


public static void f () {
System . out , println (" Called f ()");
System . out . println ( "0" / 1 );
}
public static void main ( String [] args ) { }
}
javac TEE . java
TEE . java :6: error : bad operand types for binary operator ’/ ’
System . out . println ( "0" / 1 );
^
first type : String , second type : int
The compiler indicates a type error before program execution

COMP519 Web Programming Lecture 10 Slide L10 – 16


JavaScript Type Systems and Type Checking

Type Systems and Type Checking


Dynamically typed programming language
Type checking is performed during program execution when statements
are executed / expressions are evaluated

Example: Python is a dynamically typed programming language


def f ():
print (" Called f ()");
print ( "0" / 1 );
python TEE . py
No o u t p u t
No e r r o r m e s s a g e s
Expression "0" / 1, that contains a type error, is never executed,
so no error is indicated

COMP519 Web Programming Lecture 10 Slide L10 – 17


JavaScript Type Systems and Type Checking

Type Systems and Type Checking


Dynamically typed programming language
Type checking is performed during program execution when statements
are executed / expressions are evaluated

Example: Python is a dynamically typed programming language


def f ():
print (" Called f ()");
print ( "0" / 1 );

f ();
python TEE . py
Called f ()
T r a c e b a c k ( most r e c e n t c a l l l a s t ) :
F i l e ”TEE . py ” , l i n e 5 , i n <module>
f ();
F i l e ”TEE . py ” , l i n e 3 , i n f
p r i n t (”0” / 1 ) ;
T y p e E r r o r : u n s u p p o r t e d o p e r a n d t y p e ( s ) f o r / : ’ s t r ’ and ’ i n t ’
Now that Python attempts to evaluate "0" / 1, a type error is indicated
COMP519 Web Programming Lecture 10 Slide L10 – 18
JavaScript Type Systems and Type Checking

Type Systems and Type Checking


Strongly typed programming language
Each value has exactly one type and operations can only be applied to
argument values of the correct type

Example: Java is a (fairly) strongly typed programming language


public class STE {
public static void main ( String [] args ) {
double x = 2.1 + (5 * Integer . parseInt ("2"));
double y = 2.1 + (5 * "2");
}
}
javac STE . java
STE . java :4: error : bad operand types for binary operator ’* ’
double y = 2.1 + (5 * "2");
^
first type : int
second type : String
Applying arithmetic multiplication to a string is a type error

COMP519 Web Programming Lecture 10 Slide L10 – 19


JavaScript Type Systems and Type Checking

Type Systems and Type Checking


Loosely/Weakly typed programming language
A value of one type can be treated as being of another type
(or is automatically converted to the type required by an operation)

Example: JavaScript is a loosely typed programming language


y = 2.1 + (5 * "2")
console . log ( y )
node STE . js
12.1

Applying arithmetic multiplication to a string works

COMP519 Web Programming Lecture 10 Slide L10 – 20


JavaScript Type Systems and Type Checking

JavaScript: Type System


• There are types and each value is of a particular type (or none)
519 and 1.9e3 are of type number (and only of that type)
’519’ and "1.9e3" are of type string (and only of that type)
• But the type of a variable does not need to be declared
var x ; // declares the variable x

• The type of a variable depends on the value it currently stores qnd


the type can change if it is assigned a value of a different type
x = 519; // x is of type number
x = ’519 ’; // x is of type string

• Function declarations do not specify the type of their parameters


• In function applications the types of arguments will be adjusted
automatically (if possible)
COMP519 Web Programming Lecture 10 Slide L10 – 21
JavaScript Type Systems and Type Checking

JavaScript: Type System


• There are types and each value is of a particular type (or none)
• But the type of a variable does not need to be declared
• The type of a variable depends on the value it currently stores and
the type can change if it is assigned a value of a different type
• Function declarations do not specify the type of their parameters
function add (x , y ) { return x + y ; }

• In function applications the types of arguments will be adjusted


automatically (if possible)
add (519 , 1.9 e3 ) // returns the number 2419 = 519+1900
add ( ’519 ’ ,"1.9 e3 ") // returns the string ’5191.9 e3 ’
add (519 , ’1.9 e3 ’) // returns the string ’5191.9 e3 ’
add ( true , 1.9 e3 ) // returns the number 1901

; makes programming easier


; potentially leads to more bugs

COMP519 Web Programming Lecture 10 Slide L10 – 22


Further Reading

Revision and Further Reading


• Read
• Chapter 14: Exploring JavaScript
of R. Nixon: Learning PHP, MySQL & JavaScript:
with jQuery, CSS & HTML5. O’Reilly, 2018.
• Read
• Chapter 1: What is JavaScript?
• Chapter 2: JavaScript in HTML
• Chapter 3: Language Basics: Syntax
of N. C. Zakas: Professional JavaScript for Web developers.
Wrox Press, 2009.
Harold Cohen Library 518.59.Z21 or
E-book http://library.liv.ac.uk/record=b2238913

COMP519 Web Programming Lecture 10 Slide L10 – 23

You might also like