JavaScript Basics
Topics
- What is and Why JavaScript?
- How and Where do you place JavaScript code?
- JavaScript language
- Variables, statements, code blocks, control flow
- JavaScript functions
- Defining functions -3 different ways
- Calling functions
- Function as a method
- JavaScript data types
- JavaScript objects
- JavaScript object is a Hash
- 3 different ways of creating a JavaScript object
What is and Why JavaScript?
What is JavaScript?
- Scripting language
- Scripting language is a lightweight programming language
- Used to add interactivity to HTML pages
- JavaScript code could be embedded directly into HTML pages or in a separate file, which is referenced from the HTML page
- JavaScript is traditionally used as client-only (within HTML page) language – now slowly gaining some traction as a standalone and server side language as well
- Example: Node.js
- Our focus in this codecamp is on the client side only
What can JavaScript do?
- JavaScript gives HTML page writers a programming tool for adding behavior
- JavaScript can put dynamic text into an HTML page
- JavaScript can react to events
- JavaScript can read and write HTML elements
- JavaScript can be used to validate input data
- JavaScript can be used to detect the browser type & version
- JavaScript can be used to detect whether a browser support a feature or not
- JavaScript can be used to animate HTML elements
Lab: Exercise 0: Install Chrome Browser & Brackets (or VSC) 4262_javascript_basics.zip
How and Where Do You Place JavaScript Code (in an HTML page)?
How to put JavaScript code into an HTML page?
//Use the <script> tag along with type attribute
// Scripts can be in the either <head> section and/or <body> section
<html>
<head>
<script type="text/javascript">
...
</script>
</head>
<body>
<script type="text/javascript">
...
</script>
</body>
</html>
Referencing External JavaScript File
- JavaScript code can in a separate script file
- Script file can be provided locally or remotely
- Accessible via src attribute
<html>
<head>
<script language="JavaScript"
type="text/javascript"
src="http://somesite/myOwnJavaScript.js"> // Remotely located
</script>
<script language="JavaScript"
type="text/javascript"
src="/myOwnSubdirectory/myOwn2ndJavaScript.js"> //Locally located
</script>
Lab: Exercise 1: JavaScript Code 4262_javascript_basics.zip
JavaScript Language: Variables
- You create a variable with or without the var keyword (scope will be different, however – explained in the following slide)
var strname = <some value>;
strname = <some value>;
- Variable names are case sensitive
- yes and Yes are two different variables
- Variable names must begin with a letter, the $ character, or the underscore character
- myname, my_name, $myname
- If you declare a variable without assigning any value to it, its type is undefined
- var myvar; // undefined
JavaScript Variable Scope
- In JavaScript, the variable scope is aligned with a function
- Not with a block as in the case of C or Java
- Global scope variables (or global variables)
- If you declare a variable outside a function, it is in global scope
- All functions on the same page can access any global variables
- The usage of global variables are discouraged because it is prone to be overridden accidentally
- Local scope variables (or local variables)
- When you declare a variable with “var” and within a function, the variable can only be accessed within that function - local scope
Usage of “var” keyword & Variable Scope
- In the global scope, there's no difference between “var x” and “x” – they are both in global scope
- In the local scope – meaning inside a function, then "var" will create a local variable
// These are both global variables
var foo = 1;
bar = 2;
function() {
var foo = 1; // Local
bar = 2; // Global
// Execute an anonymous function
(function() {
var wibble = 1; // Local
foo = 2; // Inherits from scope above (creating a closure)
moo = 3; // Global
}())
}
Lab: Exercise 2: Variables 4262_javascript_basics.zip
JavaScript Language: Statements & Code Blocks
JavaScript Statements
- JavaScript statements are "instructions" to be "executed"
- JavaScript statements are often called JavaScript code
- Semicolons separate JavaScript statements (it is optional, however)
var x = 20;
var y = 30;
document.write("<h1>This is a heading</h1>");
document.write("<p>This is a paragraph.</p>");
document.write("<p>This is another paragraph.</p>");
// The alert message below gets executed when the page is loaded
alert("Hello Boston! This message gets displayed when a page is loaded.");
function displaymessage() {
alert("Hello World! ");
}
JavaScript Code Blocks
- JavaScript statements can be grouped together in a code block, inside curly brackets {...}
- The most common form of code block is a function
function displaymessage() {
var x = 20;
var y = 30;
alert("Result = " + (x+y));
}
JavaScript Language: Control flow
- Conditional statement
- if, if.. else, switch
- Loop
- for loop, while loop, do-while loop
- try...catch
- throw
Lab: Exercise 3: Control flow 4262_javascript_basics.zip
JavaScript Functions: Defining Functions
What is a Function?
- A function is a JavaScript procedure—a set of statements that performs a task or calculates a value
- A function can take 0 or more named parameters
- The function body can contain as many statements as you like, and can declare its own variables which are local to that function
- Variables with “var” keyword within the function are local scope variables
- Variables without “var” keyword within the function are global scope variables
- The return statement can be used to return a value at any time, terminating the function
Function Definitions (Declarations)
- A function can be defined (also called “declared”) in several ways
- Through function statement
- Through function expression
- Through function constructor (rarely used)
- When a function is declared, internally a function object is created and that function object is assigned to a property of the owning object
- The owning object of the top-level function is “window” for browser
- Note that function definition (declaration) is just that – it is NOT function invocation (function execution)
- In other words, a function object gets created but it is not executed
#1: Through function Statement
- A function statement is made of function keyword, followed by
- The optional name of the function
- A list of arguments to the function
- The JavaScript statements enclosed in curly braces, { }
- A function statement is a genuine JavaScript statement
- Execution of the function statement creates a function object
- A function object, once created, is assigned to a property of owner object – the property name is the same as function name
// Declare a named function as a function statement.
// “myNamedFunction” property of owner object points to
// newly created function object.
function myNamedFunction(arg1, arg2) {
console.log(arg1, arg2);
}
#2: Through function Expression
- A function can be defined as a function expression
- The function has to be assigned to a variable or can be passed as an argument in this case
- A function expression can be anonymous (name is optional)
// Create a function object via anonymous function expression and
// assign it to myFunction1 variable
var myFunction1 = function(something){
console.log(something);
}
- A function object is created and then assigned to the property of the owning object – the property name is the variable name, myFunction1 in the example above
#3: Through function Constructor
- The Function() constructor expects any number of string arguments
- The last argument is the body of the function - it can contain arbitrary JavaScript statements, separated from each other by semicolons
// Create a function through Function Constructor
var my_func = new Function("x", "y", "return x+y;");
/* This is the same as above
function my_func(x, y){
return x+y;
}
*/
my_func(10,20);
JavaScript Functions: A Function as a Method
A Function as a Method
- A property of a JavaScript object whose value is a function object is called a method
// Declare a function function functionDefinedSomewhere(something) { console.log(something) } // Create a JavaScript object var myPerson = { firstname : "John", lastname : "Doe", age : 50, // tellYourage,tellSomething and tellWhatever methods tellYourage : function() { // Anonymous function without argument console.log("The age is " + this.age); }, tellSomething : function(something) { // Anonymous function with an argument console.log(something); }, tellWhatever : functionDefinedSomewhere // Named function }
JavaScript Functions: Function Invocation (Function execution)
Function Invocation (Function Execution)
- Defining a function does not invoke(execute, call) it
- Defining the function simply creates a function object and assigns it to a property of owning object
- In order to execute the function (perform some task), you have to explicitly invoke it
- A function gets executed only by an invocation (or by an event if the function is configured as event handler)
- In order to prevent the browser from executing a script as soon as the page is loaded, you want to write your script as a function
- You may invoke a function from anywhere within a page (or even from other pages if the function is embedded in an external .js file)
Function Invocation (Function Execution)
<script type="text/javascript">
// Declare/define a named function as a function statement
function myNamedFunction(something) {
//function definition
console.log(something);
}
// Declare/define an anonymous function expression and assign it to
// myFunction1 variable
var myFunction1 = function(something){
//function definition
console.log(something);
}
var myFunction2 = myNamedFunction;
// Invoke/execute/call functions
//function invocation
myNamedFunction("Life is good!");
myFunction1("Hello!");
myFunction2("Goodbye!");
</script>
Function Invocation via Event
<html>
<head>
<title/>
<script type="text/javascript">
// If alert("Hello world!!") below had not been written within a
// function, it would have been executed as soon as the page gets loaded.
function displaymessage() {
alert("Hello World!")
}
</script>
</head>
<body>
<form>
<!-- function invocation via event -->
<input type="button" value="Click me!"
onclick="displaymessage()" >
</form>
</body>
</html>
Lab: Exercise 4: Defining and Invoking functions 4262_javascript_basics.zip
JavaScript Data Types
- JavaScript is a loosely typed or dynamic type language
- You don't have to declare a type of a variable
- The type gets determined automatically when the program gets executed
- You can use a same variable as different types
- var foo = 35; // foo is Number type
- var foo = “passion”; // foo is String type
- var foo = true; // foo is Boolean type
- There are 7 data types
- 6 data types are primitive types
- Boolean, Null, Undefined, Number, String, Symbol
- Primitive types define immutable values (values, which are incapable of being changed) - these immutable values of the primitive types are valled as "primitive values"
- The remaining data type is Object type
Primitive types
- Boolean type
- Can have two values: true or false
- Null type
- Has exactly one value: null
- Undefined type
- A variable that has not been assigned a value has the valued undefined
- Number type
- String type
- Symbol type (introduced in ECMAScript 6)
- Unique and immutable
Object Type
- A JavaScript object has properties and methods
- Example: String JavaScript object has length property and toUpperCase() method
<script type="text/javascript">
var txt="Hello World!"
document.write(txt.length)
document.write(txt.toUpperCase())
</script>
Lab: Exercise 5: Object types 4262_javascript_basics.zip
JavaScript Objects: Hash (Associative Array)
JavaScript Object is a Hash
- A JavaScript object is essentially a hash (an associative array) with property-name/value pairs
- Property name has to be unique
- It is like a Map in Java
- There is no exception - even a function object is a hash
{
name1: value1,
name2: value2,
name3: value3,
....
nameN: valueN
}
How to Refer Property Names
- The following two lines of code are semantically equivalent
myObject.myfield = “something”;
myObject['myfield'] = “something”;
- [..] notation can take variable
var x = “test”;
myObject[x] = “Passion!”;
console.log(myPerson.test); // Passion!
Value of a Property Can Be function object
var myPerson = {
firstname: "John",
lastname: "Doe",
age: 50,
tellYourage: function () { // Anonymous function without argument
alert(“The age is ” + this.age );
},
tellSomething: function(something) { // Anonymous function with an argument
//The Value of tellSomething function property is a function object
alert(something);
},
tellWhatever: functionDefinedSomewhere // Named function
}
function functionDefinedSomewhere(something){
alert(something)
}
myPerson.tellYourage();
myPerson.tellSomething(“Life is good!”);
myPerson.tellWhatever(“Hello”);
Value can be another Java Script Object
var myVar = {
count: 20,
person: myPerson // myPerson was defined in previous slide
}
myVar.person.tellSomething("Life is REALLY REALLY good!");
JavaScript Object vs. Java Object
- Similarities
- Both has properties and methods
- Differences
- JavaScript object can be dynamically typed (while in Java, object is statically typed)
- In JavaScript, properties and methods can be added dynamically to a JavaScript object during runtime (while in Java, properties and methods need to be defined at compile time)
- In JavaScript, a method is defined by assigning a function object to a property
JavaScript Objects; 3 Different Ways of Creating JavaScript Objects
3 Ways of Creating Your Own JavaScript Objects
- Create an object instance as Hash Literal (You have already seen this) – preferred
- Define a function as a Constructor first and then create an instance of an object from it
- Create a direct instance of an object by using built-in constructor of the built-in “Object” object
Option #1: Creating JavaScript Object as a Hash Literal
// Create JavaScript object as a Hash Literal then assign to “personObj”
var personObj = {
firstname: "John",
lastname: "Doe",
age: 50,
tellYourage: function () {
alert(“The age is ” + this.age );
}
tellSomething: function(something) {
alert(something);
}
}
// Call methods of “personObj” JavaScript object
personObj.tellYourage();
personObj.tellSomething(“Life is good!”);
Option #2: Create from a Constructor Function (Template)
- A function defines the structure of a JavaScript object – it plays a role of a template
// Define a Constructor function
function Person(firstname,lastname,age,eyecolor){
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.tellYourage=function(){
alert(“This age is ” + this.age);
}
}
// Continued in the next slide
Option #2: Create from a Constructor Function (Continued)
Once you have a Constructor function (as you saw in the previous slide), you can create new instances of JavaScript object using new keyword
myFather=new Person("John","Doe",50,"blue");
myMother=new Person("Sally","Rally",48,"green");
- You can then add new properties and functions to new objects
myFather.newField = “some data”;
myFather.myfunction = function() {
alert(this["fullName"] + ” is ” + this.age);
}
Option #3: Create a Direct Instance of a JavaScript Object from “Object” object
- By invoking the built-in constructor for the Object object
// Initially empty with no properties or methods
personObj=new Object(); // same as personObj = { }
- Add properties to it
personObj.firstname="John";
personObj.age=50;
- Add an anonymous function to the personObj
personObj.tellYourage=function(){
alert(“This age is ” + this.age);
}
// You can call then tellYourage function as following
personObj.tellYourage();
Option #3: Create a Direct Instance of a JavaScript Object from “Object” (Continued)
• Add a pre-defined function
function tellYourage(){
alert(“The age is” + this.age);
}
personObj.tellYourage=tellYourage;
- By the way, note that the following two lines of code are doing completely different things
// Set property with a function
personObj.tellYourage=tellYourage;
// Set property with returned value of the function
personObj.tellYourage=tellYourage();
Lab: Exercise 6: Create objects 4262_javascript_basics.zip
Download course content