SlideShare a Scribd company logo
JavaScript for ABAP Programmers
Data Types
Chris Whealy / The RIG
ABAP
Strongly typed
Syntax similar to COBOL
Block Scope
No equivalent concept
OO using class based inheritance
Imperative programming

JavaScript
Weakly typed
Syntax derived from Java
Lexical Scope
Functions are 1st class citizens
OO using referential inheritance
Imperative or Functional programming
Strongly Typed vs. Weakly Typed Languages
There are two schools of thought for determining how data should be stored in variables:
• ABAP uses Strong (or Static) Typing
Apart from field symbols, all ABAP variables
must have their data type defined at declaration
time

© 2013 SAP AG. All rights reserved.

3
Strongly Typed vs. Weakly Typed Languages
There are two schools of thought for determining how data should be stored in variables:
• ABAP uses Strong (or Static) Typing
• JavaScript uses Weak (or Dynamic) Typing
Apart from field symbols, all ABAP variables
A variable takes on the data type of whatever
must have their data type defined at declaration
value it currently holds
time

© 2013 SAP AG. All rights reserved.

4
Strongly Typed vs. Weakly Typed Languages
There are two schools of thought for determining how data should be stored in variables:
• ABAP uses Strong (or Static) Typing
• JavaScript uses Weak (or Dynamic) Typing
Apart from field symbols, all ABAP variables
A variable takes on the data type of whatever
must have their data type defined at declaration
value it currently holds
time
• Pros and Cons of Strong Typing

+ Data type errors can be trapped at compile time
- Rigid type systems reduce language flexibility

© 2013 SAP AG. All rights reserved.

5
Strongly Typed vs. Weakly Typed Languages
There are two schools of thought for determining how data should be stored in variables:
• ABAP uses Strong (or Static) Typing
• JavaScript uses Weak (or Dynamic) Typing
Apart from field symbols, all ABAP variables
A variable takes on the data type of whatever
must have their data type defined at declaration
value it currently holds
time
• Pros and Cons of Strong Typing
• Pros and Cons of Weak Typing

+ Data type errors can be trapped at compile time
- Rigid type systems reduce language flexibility

- Data type errors can only be trapped at runtime
+ Highly flexible type system allows for a dynamic
style of coding

© 2013 SAP AG. All rights reserved.

6
Strongly Typed vs. Weakly Typed Languages
There are two schools of thought for determining how data should be stored in variables:
• ABAP uses Strong (or Static) Typing
• JavaScript uses Weak (or Dynamic) Typing
Apart from field symbols, all ABAP variables
A variable takes on the data type of whatever
must have their data type defined at declaration
value it currently holds
time
• Pros and Cons of Strong Typing
• Pros and Cons of Weak Typing

+ Data type errors can be trapped at compile time
- Rigid type systems reduce language flexibility

- Data type errors can only be trapped at runtime
+ Highly flexible type system allows for a dynamic
style of coding

Compiled languages (E.G. ABAP, Java, C) tend to use strong typing, whereas interpreted scripting
languages (E.G. JavaScript, Ruby, Python) tend to use weak typing.

© 2013 SAP AG. All rights reserved.

7
JavaScript Data Types: Overview
In JavaScript, there are only 6 data types.
At any one time the value of a variable belongs to one and only one of the following data types.

Data Type

This value of this variable…

Null

Is explicitly defined as having no value

Undefined

Is indeterminate

Boolean

Is either true or false

String

Is an immutable collection of zero or more Unicode characters

Number

Can be used in mathematical operations

Object

Is an unordered collection of name/value pairs

© 2013 SAP AG. All rights reserved.

8
JavaScript Data Types 1/3
In the coding, the data types are specified as follows:
// -----------------------------------------------------------------------------------------------// Special
null;
// Indicates an explicit non-value
undefined;
// Indicates an indeterminate value (E.G. a variable is declared but not initialised)

© 2013 SAP AG. All rights reserved.

9
JavaScript Data Types 1/3
In the coding, the data types are specified as follows:
// -----------------------------------------------------------------------------------------------// Special
null;
// Indicates an explicit non-value
undefined;
// Indicates an indeterminate value (E.G. a variable is declared but not initialised)
// -----------------------------------------------------------------------------------------------// Boolean
true;
false;

© 2013 SAP AG. All rights reserved.

10
JavaScript Data Types 1/3
In the coding, the data types are specified as follows:
// -----------------------------------------------------------------------------------------------// Special
null;
// Indicates an explicit non-value
undefined;
// Indicates an indeterminate value (E.G. a variable is declared but not initialised)
// -----------------------------------------------------------------------------------------------// Boolean
true;
false;
// -----------------------------------------------------------------------------------------------// String – contains zero or more Unicode characters
'Bazinga!';
// Can be delimited by either single quotes
"";
// Or double quotes

© 2013 SAP AG. All rights reserved.

11
JavaScript Data Types 2/3
In the coding, the data types are specified as follows:
// -----------------------------------------------------------------------------------------------// Number
3.1415926;
// Stored as 64-bit floating point number
1;
// Be careful, this is stored as floating point value, not an integer!

© 2013 SAP AG. All rights reserved.

12
JavaScript Data Types 2/3
In the coding, the data types are specified as follows:
// -----------------------------------------------------------------------------------------------// Number
3.1415926;
// Stored as 64-bit floating point number
1;
// Be careful, this is stored as floating point value, not an integer!
// Warning! All the usual problems associated with trying to represent decimal values in binary
// floating point format still apply in JavaScript!
var result = 0.1 + 0.2;
result;
//  0.30000000000000004, not 0.3 (Decimal 0.1 has no exact binary equivalent)

© 2013 SAP AG. All rights reserved.

13
JavaScript Data Types 2/3
In the coding, the data types are specified as follows:
// -----------------------------------------------------------------------------------------------// Number
3.1415926;
// Stored as 64-bit floating point number
1;
// Be careful, this is stored as floating point value, not an integer!
// Warning! All the usual problems associated with trying to represent decimal values in binary
// floating point format still apply in JavaScript!
var result = 0.1 + 0.2;
result;
//  0.30000000000000004, not 0.3 (Decimal 0.1 has no exact binary equivalent)
// Special numerical values that could be returned in the event of illegal mathematical operations
// (These values are actually stored as properties of the Global Object)
NaN;
// 'Not a Number' E.G. 1/'cat'  NaN
Infinity;
// The result of division by zero

© 2013 SAP AG. All rights reserved.

14
JavaScript Data Types 3/3
In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as
if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc.
// -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces
{ pet1: 'cat',
pet2: 'dog' };

© 2013 SAP AG. All rights reserved.

15
JavaScript Data Types 3/3
In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as
if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc.
// -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces
{ pet1: 'cat',
pet2: 'dog' };
// Array object. Zero or more values of any data type accessed by a numerical, 0 based index
[1,2,3,4,5];

© 2013 SAP AG. All rights reserved.

16
JavaScript Data Types 3/3
In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as
if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc.
// -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces
{ pet1: 'cat',
pet2: 'dog' };
// Array object. Zero or more values of any data type accessed by a numerical, 0 based index
[1,2,3,4,5];
// Function object. A special object that has both properties and executable content
function() { /* statements */ }

© 2013 SAP AG. All rights reserved.

17
JavaScript Data Types 3/3
In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as
if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc.
// -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces
{ pet1: 'cat',
pet2: 'dog' };
// Array object. Zero or more values of any data type accessed by a numerical, 0 based index
[1,2,3,4,5];
// Function object. A special object that has both properties and executable content
function() { /* statements */ }
// Math object. Contains many useful mathematical functions and constants
Math.PI; //  3.141592653589793

© 2013 SAP AG. All rights reserved.

18
JavaScript Data Types 3/3
In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as
if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc.
// -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces
{ pet1: 'cat',
pet2: 'dog' };
// Array object. Zero or more values of any data type accessed by a numerical, 0 based index
[1,2,3,4,5];
// Function object. A special object that has both properties and executable content
function() { /* statements */ }
// Math object. Contains many useful mathematical functions and constants
Math.PI; //  3.141592653589793
// Regular Expression Object. A tool for specifying and extracting patterns of text within a string
/^(?:([A-Za-z]+):)?(/{0,3})([0-9.-A-Za-z]+)(?::(d+))?(?:/([^?#]*))?(?:?([^#]*))?(?:#(.*))?$/;

© 2013 SAP AG. All rights reserved.

19
JavaScript Data Types 3/3
In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as
if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc.
// -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces
{ pet1: 'cat',
pet2: 'dog' };
// Array object. Zero or more values of any data type accessed by a numerical, 0 based index
[1,2,3,4,5];
// Function object. A special object that has both properties and executable content
function() { /* statements */ }
// Math object. Contains many useful mathematical functions and constants
Math.PI; //  3.141592653589793
// Regular Expression Object. A tool for specifying and extracting patterns of text within a string
// Regular expressions are sometimes confused with Egyptian hieroglyphics... :-)

© 2013 SAP AG. All rights reserved.

20
Variables and Data Types
In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of
a particular type. The data type of a variable is determined simply by the value it currently holds.
// A weakly typed language means that data types are determined
// dynamically at runtime, not statically at design time
var whoAmI = 'Hello world';

© 2013 SAP AG. All rights reserved.

// Variable 'whoAmI' is both declared & assigned a string value

21
Variables and Data Types
In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of
a particular type. The data type of a variable is determined simply by the value it currently holds.
// A weakly typed language means that data types are determined
// dynamically at runtime, not statically at design time
var whoAmI = 'Hello world';

// Variable 'whoAmI' is both declared & assigned a string value

whoAmI = 1.61792;
whoAmI = [1,2,3,4,5];

// Now it's a number
// Now it's an array

© 2013 SAP AG. All rights reserved.

22
Variables and Data Types
In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of
a particular type. The data type of a variable is determined simply by the value it currently holds.
// A weakly typed language means that data types are determined
// dynamically at runtime, not statically at design time
var whoAmI = 'Hello world';

// Variable 'whoAmI' is both declared & assigned a string value

whoAmI = 1.61792;
whoAmI = [1,2,3,4,5];

// Now it's a number
// Now it's an array

whoAmI = true;

// Now it's a Boolean

© 2013 SAP AG. All rights reserved.

23
Variables and Data Types
In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of
a particular type. The data type of a variable is determined simply by the value it currently holds.
// A weakly typed language means that data types are determined
// dynamically at runtime, not statically at design time
var whoAmI = 'Hello world';

// Variable 'whoAmI' is both declared & assigned a string value

whoAmI = 1.61792;
whoAmI = [1,2,3,4,5];

// Now it's a number
// Now it's an array

whoAmI = true;

// Now it's a Boolean

whoAmI = {
// Now it's an object
someProperty: 'Hello world'
}

© 2013 SAP AG. All rights reserved.

24
Variables and Data Types
In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of
a particular type. The data type of a variable is determined simply by the value it currently holds.
// A weakly typed language means that data types are determined
// dynamically at runtime, not statically at design time
var whoAmI = 'Hello world';

// Variable 'whoAmI' is both declared & assigned a string value

whoAmI = 1.61792;
whoAmI = [1,2,3,4,5];

// Now it's a number
// Now it's an array

whoAmI = true;

// Now it's a Boolean

whoAmI = {
// Now it's an object
someProperty: 'Hello world'
}
whoAmI = function() { };

© 2013 SAP AG. All rights reserved.

// Now it's a...you get the idea

25

More Related Content

What's hot (20)

PDF
Asynchronous JavaScript Programming
Haim Michael
 
PDF
Understanding react hooks
Samundra khatri
 
PDF
JavaScript Tutorial For Beginners | JavaScript Training | JavaScript Programm...
Edureka!
 
PDF
Kotlin vs Java | Edureka
Edureka!
 
PDF
Asynchronous JavaScript Programming with Callbacks & Promises
Hùng Nguyễn Huy
 
PPSX
Industrial Training Report on Java Technology.
Ritesh Kumar Bhanu
 
PPTX
Spring Boot
Jiayun Zhou
 
PPTX
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
ODP
Java 9 Features
NexThoughts Technologies
 
PDF
Basics of reflection in java
kim.mens
 
PPTX
OCA Java SE 8 Exam Chapter 3 Core Java APIs
İbrahim Kürce
 
PDF
Intro to Asynchronous Javascript
Garrett Welson
 
PPT
Java And Multithreading
Shraddha
 
PPTX
Dart presentation
Lucas Leal
 
PDF
Angular & RXJS: examples and use cases
Fabio Biondi
 
PPTX
Java virtual machine
Nikhil Sharma
 
PPTX
OCA Java SE 8 Exam Chapter 2 Operators & Statements
İbrahim Kürce
 
PDF
JavaScript Programming
Sehwan Noh
 
PDF
Spring boot
Bhagwat Kumar
 
PPTX
React workshop
Imran Sayed
 
Asynchronous JavaScript Programming
Haim Michael
 
Understanding react hooks
Samundra khatri
 
JavaScript Tutorial For Beginners | JavaScript Training | JavaScript Programm...
Edureka!
 
Kotlin vs Java | Edureka
Edureka!
 
Asynchronous JavaScript Programming with Callbacks & Promises
Hùng Nguyễn Huy
 
Industrial Training Report on Java Technology.
Ritesh Kumar Bhanu
 
Spring Boot
Jiayun Zhou
 
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
Java 9 Features
NexThoughts Technologies
 
Basics of reflection in java
kim.mens
 
OCA Java SE 8 Exam Chapter 3 Core Java APIs
İbrahim Kürce
 
Intro to Asynchronous Javascript
Garrett Welson
 
Java And Multithreading
Shraddha
 
Dart presentation
Lucas Leal
 
Angular & RXJS: examples and use cases
Fabio Biondi
 
Java virtual machine
Nikhil Sharma
 
OCA Java SE 8 Exam Chapter 2 Operators & Statements
İbrahim Kürce
 
JavaScript Programming
Sehwan Noh
 
Spring boot
Bhagwat Kumar
 
React workshop
Imran Sayed
 

Similar to JavaScript for ABAP Programmers - 2/7 Data Types (20)

PPTX
WT Unit-3 PPT.pptx
TusharTikia
 
PPTX
javascript
Kaya Ota
 
PPT
JavaScript Data Types
Charles Russell
 
PDF
Java script summary
maamir farooq
 
PPT
data-types-operators-datatypes-operators.ppt
Gagan Rana
 
KEY
JavaScript: Values, Types and Variables
LearnNowOnline
 
PPTX
Javascript analysis
Uchitha Bandara
 
PPT
02. Data Type and Variables
Tommy Vercety
 
PPTX
Java script session 3
Saif Ullah Dar
 
PPT
An introduction to javascript
MD Sayem Ahmed
 
PDF
Introduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Daniel McGhan
 
PPT
chap04.ppt
Varsha Uchagaonkar
 
PDF
Module 1: JavaScript Basics
Daniel McGhan
 
PPT
Ajax and JavaScript Bootcamp
AndreCharland
 
PPTX
copa-ii.pptx
ERHariramPrajapat
 
PPTX
Java script
Abhishek Kesharwani
 
PPTX
Javascript
Prashant Kumar
 
ODP
Datatype in JavaScript
Rajat Saxena
 
PDF
Javascript
20261A05H0SRIKAKULAS
 
PPTX
CSC PPT 13.pptx
DrRavneetSingh
 
WT Unit-3 PPT.pptx
TusharTikia
 
javascript
Kaya Ota
 
JavaScript Data Types
Charles Russell
 
Java script summary
maamir farooq
 
data-types-operators-datatypes-operators.ppt
Gagan Rana
 
JavaScript: Values, Types and Variables
LearnNowOnline
 
Javascript analysis
Uchitha Bandara
 
02. Data Type and Variables
Tommy Vercety
 
Java script session 3
Saif Ullah Dar
 
An introduction to javascript
MD Sayem Ahmed
 
Introduction to JavaScript for APEX Developers - Module 1: JavaScript Basics
Daniel McGhan
 
chap04.ppt
Varsha Uchagaonkar
 
Module 1: JavaScript Basics
Daniel McGhan
 
Ajax and JavaScript Bootcamp
AndreCharland
 
copa-ii.pptx
ERHariramPrajapat
 
Java script
Abhishek Kesharwani
 
Javascript
Prashant Kumar
 
Datatype in JavaScript
Rajat Saxena
 
CSC PPT 13.pptx
DrRavneetSingh
 
Ad

Recently uploaded (20)

PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Ad

JavaScript for ABAP Programmers - 2/7 Data Types

  • 1. JavaScript for ABAP Programmers Data Types Chris Whealy / The RIG
  • 2. ABAP Strongly typed Syntax similar to COBOL Block Scope No equivalent concept OO using class based inheritance Imperative programming JavaScript Weakly typed Syntax derived from Java Lexical Scope Functions are 1st class citizens OO using referential inheritance Imperative or Functional programming
  • 3. Strongly Typed vs. Weakly Typed Languages There are two schools of thought for determining how data should be stored in variables: • ABAP uses Strong (or Static) Typing Apart from field symbols, all ABAP variables must have their data type defined at declaration time © 2013 SAP AG. All rights reserved. 3
  • 4. Strongly Typed vs. Weakly Typed Languages There are two schools of thought for determining how data should be stored in variables: • ABAP uses Strong (or Static) Typing • JavaScript uses Weak (or Dynamic) Typing Apart from field symbols, all ABAP variables A variable takes on the data type of whatever must have their data type defined at declaration value it currently holds time © 2013 SAP AG. All rights reserved. 4
  • 5. Strongly Typed vs. Weakly Typed Languages There are two schools of thought for determining how data should be stored in variables: • ABAP uses Strong (or Static) Typing • JavaScript uses Weak (or Dynamic) Typing Apart from field symbols, all ABAP variables A variable takes on the data type of whatever must have their data type defined at declaration value it currently holds time • Pros and Cons of Strong Typing + Data type errors can be trapped at compile time - Rigid type systems reduce language flexibility © 2013 SAP AG. All rights reserved. 5
  • 6. Strongly Typed vs. Weakly Typed Languages There are two schools of thought for determining how data should be stored in variables: • ABAP uses Strong (or Static) Typing • JavaScript uses Weak (or Dynamic) Typing Apart from field symbols, all ABAP variables A variable takes on the data type of whatever must have their data type defined at declaration value it currently holds time • Pros and Cons of Strong Typing • Pros and Cons of Weak Typing + Data type errors can be trapped at compile time - Rigid type systems reduce language flexibility - Data type errors can only be trapped at runtime + Highly flexible type system allows for a dynamic style of coding © 2013 SAP AG. All rights reserved. 6
  • 7. Strongly Typed vs. Weakly Typed Languages There are two schools of thought for determining how data should be stored in variables: • ABAP uses Strong (or Static) Typing • JavaScript uses Weak (or Dynamic) Typing Apart from field symbols, all ABAP variables A variable takes on the data type of whatever must have their data type defined at declaration value it currently holds time • Pros and Cons of Strong Typing • Pros and Cons of Weak Typing + Data type errors can be trapped at compile time - Rigid type systems reduce language flexibility - Data type errors can only be trapped at runtime + Highly flexible type system allows for a dynamic style of coding Compiled languages (E.G. ABAP, Java, C) tend to use strong typing, whereas interpreted scripting languages (E.G. JavaScript, Ruby, Python) tend to use weak typing. © 2013 SAP AG. All rights reserved. 7
  • 8. JavaScript Data Types: Overview In JavaScript, there are only 6 data types. At any one time the value of a variable belongs to one and only one of the following data types. Data Type This value of this variable… Null Is explicitly defined as having no value Undefined Is indeterminate Boolean Is either true or false String Is an immutable collection of zero or more Unicode characters Number Can be used in mathematical operations Object Is an unordered collection of name/value pairs © 2013 SAP AG. All rights reserved. 8
  • 9. JavaScript Data Types 1/3 In the coding, the data types are specified as follows: // -----------------------------------------------------------------------------------------------// Special null; // Indicates an explicit non-value undefined; // Indicates an indeterminate value (E.G. a variable is declared but not initialised) © 2013 SAP AG. All rights reserved. 9
  • 10. JavaScript Data Types 1/3 In the coding, the data types are specified as follows: // -----------------------------------------------------------------------------------------------// Special null; // Indicates an explicit non-value undefined; // Indicates an indeterminate value (E.G. a variable is declared but not initialised) // -----------------------------------------------------------------------------------------------// Boolean true; false; © 2013 SAP AG. All rights reserved. 10
  • 11. JavaScript Data Types 1/3 In the coding, the data types are specified as follows: // -----------------------------------------------------------------------------------------------// Special null; // Indicates an explicit non-value undefined; // Indicates an indeterminate value (E.G. a variable is declared but not initialised) // -----------------------------------------------------------------------------------------------// Boolean true; false; // -----------------------------------------------------------------------------------------------// String – contains zero or more Unicode characters 'Bazinga!'; // Can be delimited by either single quotes ""; // Or double quotes © 2013 SAP AG. All rights reserved. 11
  • 12. JavaScript Data Types 2/3 In the coding, the data types are specified as follows: // -----------------------------------------------------------------------------------------------// Number 3.1415926; // Stored as 64-bit floating point number 1; // Be careful, this is stored as floating point value, not an integer! © 2013 SAP AG. All rights reserved. 12
  • 13. JavaScript Data Types 2/3 In the coding, the data types are specified as follows: // -----------------------------------------------------------------------------------------------// Number 3.1415926; // Stored as 64-bit floating point number 1; // Be careful, this is stored as floating point value, not an integer! // Warning! All the usual problems associated with trying to represent decimal values in binary // floating point format still apply in JavaScript! var result = 0.1 + 0.2; result; //  0.30000000000000004, not 0.3 (Decimal 0.1 has no exact binary equivalent) © 2013 SAP AG. All rights reserved. 13
  • 14. JavaScript Data Types 2/3 In the coding, the data types are specified as follows: // -----------------------------------------------------------------------------------------------// Number 3.1415926; // Stored as 64-bit floating point number 1; // Be careful, this is stored as floating point value, not an integer! // Warning! All the usual problems associated with trying to represent decimal values in binary // floating point format still apply in JavaScript! var result = 0.1 + 0.2; result; //  0.30000000000000004, not 0.3 (Decimal 0.1 has no exact binary equivalent) // Special numerical values that could be returned in the event of illegal mathematical operations // (These values are actually stored as properties of the Global Object) NaN; // 'Not a Number' E.G. 1/'cat'  NaN Infinity; // The result of division by zero © 2013 SAP AG. All rights reserved. 14
  • 15. JavaScript Data Types 3/3 In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc. // -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces { pet1: 'cat', pet2: 'dog' }; © 2013 SAP AG. All rights reserved. 15
  • 16. JavaScript Data Types 3/3 In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc. // -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces { pet1: 'cat', pet2: 'dog' }; // Array object. Zero or more values of any data type accessed by a numerical, 0 based index [1,2,3,4,5]; © 2013 SAP AG. All rights reserved. 16
  • 17. JavaScript Data Types 3/3 In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc. // -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces { pet1: 'cat', pet2: 'dog' }; // Array object. Zero or more values of any data type accessed by a numerical, 0 based index [1,2,3,4,5]; // Function object. A special object that has both properties and executable content function() { /* statements */ } © 2013 SAP AG. All rights reserved. 17
  • 18. JavaScript Data Types 3/3 In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc. // -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces { pet1: 'cat', pet2: 'dog' }; // Array object. Zero or more values of any data type accessed by a numerical, 0 based index [1,2,3,4,5]; // Function object. A special object that has both properties and executable content function() { /* statements */ } // Math object. Contains many useful mathematical functions and constants Math.PI; //  3.141592653589793 © 2013 SAP AG. All rights reserved. 18
  • 19. JavaScript Data Types 3/3 In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc. // -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces { pet1: 'cat', pet2: 'dog' }; // Array object. Zero or more values of any data type accessed by a numerical, 0 based index [1,2,3,4,5]; // Function object. A special object that has both properties and executable content function() { /* statements */ } // Math object. Contains many useful mathematical functions and constants Math.PI; //  3.141592653589793 // Regular Expression Object. A tool for specifying and extracting patterns of text within a string /^(?:([A-Za-z]+):)?(/{0,3})([0-9.-A-Za-z]+)(?::(d+))?(?:/([^?#]*))?(?:?([^#]*))?(?:#(.*))?$/; © 2013 SAP AG. All rights reserved. 19
  • 20. JavaScript Data Types 3/3 In addition to the basic data type of Object, JavaScript provides several built-in objects that behave as if they were composite data types. E.G. Array, Date, Function, Math and RegEx etc. // -----------------------------------------------------------------------------------------------// Object. Zero or more unordered name:value pairs of any data type delimited by curly braces { pet1: 'cat', pet2: 'dog' }; // Array object. Zero or more values of any data type accessed by a numerical, 0 based index [1,2,3,4,5]; // Function object. A special object that has both properties and executable content function() { /* statements */ } // Math object. Contains many useful mathematical functions and constants Math.PI; //  3.141592653589793 // Regular Expression Object. A tool for specifying and extracting patterns of text within a string // Regular expressions are sometimes confused with Egyptian hieroglyphics... :-) © 2013 SAP AG. All rights reserved. 20
  • 21. Variables and Data Types In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of a particular type. The data type of a variable is determined simply by the value it currently holds. // A weakly typed language means that data types are determined // dynamically at runtime, not statically at design time var whoAmI = 'Hello world'; © 2013 SAP AG. All rights reserved. // Variable 'whoAmI' is both declared & assigned a string value 21
  • 22. Variables and Data Types In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of a particular type. The data type of a variable is determined simply by the value it currently holds. // A weakly typed language means that data types are determined // dynamically at runtime, not statically at design time var whoAmI = 'Hello world'; // Variable 'whoAmI' is both declared & assigned a string value whoAmI = 1.61792; whoAmI = [1,2,3,4,5]; // Now it's a number // Now it's an array © 2013 SAP AG. All rights reserved. 22
  • 23. Variables and Data Types In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of a particular type. The data type of a variable is determined simply by the value it currently holds. // A weakly typed language means that data types are determined // dynamically at runtime, not statically at design time var whoAmI = 'Hello world'; // Variable 'whoAmI' is both declared & assigned a string value whoAmI = 1.61792; whoAmI = [1,2,3,4,5]; // Now it's a number // Now it's an array whoAmI = true; // Now it's a Boolean © 2013 SAP AG. All rights reserved. 23
  • 24. Variables and Data Types In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of a particular type. The data type of a variable is determined simply by the value it currently holds. // A weakly typed language means that data types are determined // dynamically at runtime, not statically at design time var whoAmI = 'Hello world'; // Variable 'whoAmI' is both declared & assigned a string value whoAmI = 1.61792; whoAmI = [1,2,3,4,5]; // Now it's a number // Now it's an array whoAmI = true; // Now it's a Boolean whoAmI = { // Now it's an object someProperty: 'Hello world' } © 2013 SAP AG. All rights reserved. 24
  • 25. Variables and Data Types In weakly typed languages such as JavaScript, there is no concept of declaring that a variable should hold data of a particular type. The data type of a variable is determined simply by the value it currently holds. // A weakly typed language means that data types are determined // dynamically at runtime, not statically at design time var whoAmI = 'Hello world'; // Variable 'whoAmI' is both declared & assigned a string value whoAmI = 1.61792; whoAmI = [1,2,3,4,5]; // Now it's a number // Now it's an array whoAmI = true; // Now it's a Boolean whoAmI = { // Now it's an object someProperty: 'Hello world' } whoAmI = function() { }; © 2013 SAP AG. All rights reserved. // Now it's a...you get the idea 25