SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6
 
Ansible roles done right
Ansible roles done rightAnsible roles done right
Ansible roles done right
 
JavaScript Fetch API
JavaScript Fetch APIJavaScript Fetch API
JavaScript Fetch API
 
AEM and Sling
AEM and SlingAEM and Sling
AEM and Sling
 
Fetch API Talk
Fetch API TalkFetch API Talk
Fetch API Talk
 
routing.pptx
routing.pptxrouting.pptx
routing.pptx
 
Clean code in JavaScript
Clean code in JavaScriptClean code in JavaScript
Clean code in JavaScript
 
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
Swift Tutorial Part 1. The Complete Guide For Swift Programming LanguageSwift Tutorial Part 1. The Complete Guide For Swift Programming Language
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
 
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition! Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
 
Functional programming
Functional programmingFunctional programming
Functional programming
 
Java Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overridingJava Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overriding
 
Basic Concepts Of OOPS/OOPS in Java,C++
Basic Concepts Of OOPS/OOPS in Java,C++Basic Concepts Of OOPS/OOPS in Java,C++
Basic Concepts Of OOPS/OOPS in Java,C++
 
Complete Java Course
Complete Java CourseComplete Java Course
Complete Java Course
 
Angular 2 observables
Angular 2 observablesAngular 2 observables
Angular 2 observables
 
Spring Native and Spring AOT
Spring Native and Spring AOTSpring Native and Spring AOT
Spring Native and Spring AOT
 
Asynchronous javascript
 Asynchronous javascript Asynchronous javascript
Asynchronous javascript
 
AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101AEM & Single Page Applications (SPAs) 101
AEM & Single Page Applications (SPAs) 101
 
Angular and The Case for RxJS
Angular and The Case for RxJSAngular and The Case for RxJS
Angular and The Case for RxJS
 
Sightly - Part 2
Sightly - Part 2Sightly - Part 2
Sightly - Part 2
 

Ähnlich wie JavaScript for ABAP Programmers - 2/7 Data Types

Apache pig power_tools_by_viswanath_gangavaram_r&d_dsg_i_labs
Apache pig power_tools_by_viswanath_gangavaram_r&d_dsg_i_labsApache pig power_tools_by_viswanath_gangavaram_r&d_dsg_i_labs
Apache pig power_tools_by_viswanath_gangavaram_r&d_dsg_i_labs
Viswanath Gangavaram
 
SAP ABAP Latest Interview Questions
SAP ABAP Latest  Interview Questions SAP ABAP Latest  Interview Questions
SAP ABAP Latest Interview Questions
piyushchawala
 
2015 01-17 Lambda Architecture with Apache Spark, NextML Conference
2015 01-17 Lambda Architecture with Apache Spark, NextML Conference2015 01-17 Lambda Architecture with Apache Spark, NextML Conference
2015 01-17 Lambda Architecture with Apache Spark, NextML Conference
DB Tsai
 

Ähnlich wie JavaScript for ABAP Programmers - 2/7 Data Types (20)

Java platform
Java platformJava platform
Java platform
 
Java script session 3
Java script session 3Java script session 3
Java script session 3
 
3 jf h-linearequations
3  jf h-linearequations3  jf h-linearequations
3 jf h-linearequations
 
ABAP Coding Standards Reference Guide
ABAP Coding Standards Reference GuideABAP Coding Standards Reference Guide
ABAP Coding Standards Reference Guide
 
Unit 4 - Basic ABAP statements, ABAP Structures and ABAP Logical Expressions
Unit 4 - Basic ABAP statements, ABAP Structures and ABAP Logical ExpressionsUnit 4 - Basic ABAP statements, ABAP Structures and ABAP Logical Expressions
Unit 4 - Basic ABAP statements, ABAP Structures and ABAP Logical Expressions
 
Apache pig power_tools_by_viswanath_gangavaram_r&d_dsg_i_labs
Apache pig power_tools_by_viswanath_gangavaram_r&d_dsg_i_labsApache pig power_tools_by_viswanath_gangavaram_r&d_dsg_i_labs
Apache pig power_tools_by_viswanath_gangavaram_r&d_dsg_i_labs
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
 
Evaluate And Analysis of ALGOL, ADA ,PASCAL Programming Languages
Evaluate And Analysis of ALGOL, ADA ,PASCAL Programming Languages Evaluate And Analysis of ALGOL, ADA ,PASCAL Programming Languages
Evaluate And Analysis of ALGOL, ADA ,PASCAL Programming Languages
 
Oracle to Amazon Aurora Migration, Step by Step - AWS Online Tech Talks
Oracle to Amazon Aurora Migration, Step by Step - AWS Online Tech TalksOracle to Amazon Aurora Migration, Step by Step - AWS Online Tech Talks
Oracle to Amazon Aurora Migration, Step by Step - AWS Online Tech Talks
 
Pivotal Data Labs - Technology and Tools in our Data Scientist's Arsenal
Pivotal Data Labs - Technology and Tools in our Data Scientist's Arsenal Pivotal Data Labs - Technology and Tools in our Data Scientist's Arsenal
Pivotal Data Labs - Technology and Tools in our Data Scientist's Arsenal
 
Lecture17 ie321 dr_atifshahzad_js
Lecture17 ie321 dr_atifshahzad_jsLecture17 ie321 dr_atifshahzad_js
Lecture17 ie321 dr_atifshahzad_js
 
Dart programming language
Dart programming languageDart programming language
Dart programming language
 
SAP ABAP Latest Interview Questions
SAP ABAP Latest  Interview Questions SAP ABAP Latest  Interview Questions
SAP ABAP Latest Interview Questions
 
8. data types
8. data types8. data types
8. data types
 
2015 01-17 Lambda Architecture with Apache Spark, NextML Conference
2015 01-17 Lambda Architecture with Apache Spark, NextML Conference2015 01-17 Lambda Architecture with Apache Spark, NextML Conference
2015 01-17 Lambda Architecture with Apache Spark, NextML Conference
 
copa-ii.pptx
copa-ii.pptxcopa-ii.pptx
copa-ii.pptx
 
Spark Performance Tuning .pdf
Spark Performance Tuning .pdfSpark Performance Tuning .pdf
Spark Performance Tuning .pdf
 
A Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark PerformanceA Java Implementer's Guide to Better Apache Spark Performance
A Java Implementer's Guide to Better Apache Spark Performance
 
Z abap coding_standards_v2_0_t
Z abap coding_standards_v2_0_tZ abap coding_standards_v2_0_t
Z abap coding_standards_v2_0_t
 
Java script summary
Java script summaryJava script summary
Java script summary
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

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