SlideShare une entreprise Scribd logo
1  sur  105
Télécharger pour lire hors ligne
FUNDAMENTAL

JAVASCRIPT
Aaron Gustafson
@AaronGustafson
slideshare.net/AaronGustafson
Variables
(i.e. buckets)
FUNDAMENTAL JAVASCRIPT

Variables
var my_var;
var another_var, yet_another_var;
FUNDAMENTAL JAVASCRIPT

Variables
var MYVAR,
myvar,
myVar,
MyVar,
MyVaR;
FUNDAMENTAL JAVASCRIPT

Variables: Scope
function myFunc()
{
var my_var = false;
}
my_var; // undefined
Data Types
(i.e. stuff that goes in buckets)
FUNDAMENTAL JAVASCRIPT

Data type: Strings
var single_quoted = 'my text',
double_quoted = "more text";
var no_escape_necessary = 'some "text"',
escaped = 'some 'text'';
var numeric_string = '06517';
FUNDAMENTAL JAVASCRIPT

Data type: Numbers
var positive = 34,
negative = -1,
decimal = 3.14;
FUNDAMENTAL JAVASCRIPT

Data type: Booleans
var yes = true,
no = false,
also_yes = 1, // truthy
also_no = 0; // falsey
FUNDAMENTAL JAVASCRIPT

Data type: Arrays
var my_cats = [];
my_cats[0] = 'Sabine';
my_cats[1] = 'Dakota';
my_cats; // ['Sabine','Dakota']
FUNDAMENTAL JAVASCRIPT

Data type: Arrays
var sabine = [
'Sabine',
// 0 = name
'cat',
// 1 = type
'female',
// 2 = gender
17,
// 3 = age
true
// 4 = spayed/neutered
];
sabine[2]; // 'female'
FUNDAMENTAL JAVASCRIPT

Data type: Arrays
var sabine = ['Sabine', 'cat', 'female', 14, true],
dakota = ['Dakota', 'cat', 'male', 13, true];
pets = [ sabine, dakota ];
pets[1][0]; // 'Dakota'
FUNDAMENTAL JAVASCRIPT

Data type: Hashes
var sabine = [];
sabine['name'] = 'Sabine';
sabine['type'] = 'cat';
sabine['gender'] = 'female';
sabine['age'] = 14;
sabine['fixed'] = true;
sabine;
// []
sabine['name']; // 'Sabine'
sabine.name;
// 'Sabine'
FUNDAMENTAL JAVASCRIPT

Data type: Objects
var sabine = {};
sabine.name = 'Sabine';
sabine.type = 'cat';
sabine.gender = 'female';
sabine.age = 14;
sabine.fixed = true;
sabine;
// Object
sabine['name']; // 'Sabine'
sabine.name;
// 'Sabine'
Operators
(i.e. telling JS what to do)
FUNDAMENTAL JAVASCRIPT

Operators: Arithmetic
var one = 2 - 1,
two = 1 + 1,
three = 9 / 3,
four = 2 * 2,
five = three + two;
FUNDAMENTAL JAVASCRIPT

Operators: Concatenation
'This is a ' + 'string';

// 'This is a string'
FUNDAMENTAL JAVASCRIPT

Operators: Shorthand
var my_var = 1;
my_var
my_var
my_var
my_var

+= 2; // 3
-= 2; // 1
*= 2; // 2
/= 2; // 1

my_var++;
my_var--;
++my_var;
--my_var;

//
//
//
//

2
1
2
1

(after eval.)
(after eval.)
(before eval.)
(before eval.)
FUNDAMENTAL JAVASCRIPT

Operators: Comparison
var my_var = 1;
my_var
my_var
my_var
my_var
my_var
my_var
my_var
my_var

> 2;
< 2;
== 2;
>= 2;
<= 2;
!= 2;
=== 2;
!== 2;

// false
// true
// false
// false
// true
// true
// false
// true
FUNDAMENTAL JAVASCRIPT

Operators: Identity
function isTrue( value )
{
return value === true;
}
isTrue(
isTrue(
isTrue(
isTrue(

true ); // true
false ); // false
1 );
// false
0 );
// false
FUNDAMENTAL JAVASCRIPT

Operators: Logical
if ( ! my_var )
{
// my_var is false, null or undefined (not)
}
if ( my_var > 2 && my_var < 10 )
{
// my_var is between 2 and 10 (exclusive)
}
if ( my_var > 2 || my_var < 2 )
{
// my_var is greater or less than 2
// (i.e. my_var != 2)
}
FUNDAMENTAL JAVASCRIPT

Operators: Logical
if ( ! ( my_var < 2 ) )
{
// my_var is not less than 2
// (or my_var >= 2)
}
if ( ( my_var > 2 &&
my_var < 10 ) ||
my_var == 15 )
{
// my_var is between 2 and 10 (exclusive)
// or my_var is 15
}
FUNDAMENTAL JAVASCRIPT

Data type: Dynamic typing
var my_var = false;

// boolean

my_var = 14;

// number

my_var = "test";

// string

my_var = [];

// array

my_var = {};

// object

my_var = function(){}; // function
FUNDAMENTAL JAVASCRIPT

Data type: Dynamic typing
'This is a ' + 'string';

// 'This is a string'

10 + '20';

// '1020'
Control Structures
(i.e. conducting the symphony)
FUNDAMENTAL JAVASCRIPT

Conditional Action
if ( condition )
{
statement ;
}
FUNDAMENTAL JAVASCRIPT

Semicolons: Use them
first statement
second statement
FUNDAMENTAL JAVASCRIPT

Semicolons: Use them
first statement
second statement
compression
first statement second statement
FUNDAMENTAL JAVASCRIPT

Semicolons: Use them
first statement ;
second statement ;
compression
first statement ; second statement ;
FUNDAMENTAL JAVASCRIPT

Conditional Action
if ( 1 > 2 )
{
console.log( 'something is terribly wrong' );
}
FUNDAMENTAL JAVASCRIPT

Conditional Action
if ( 1 > 2 )
{
console.log( 'something is terribly wrong' );
}
else
{
console.log( 'everything is okay' );
}
FUNDAMENTAL JAVASCRIPT

Conditional Action
console.log(
1 > 2 ? 'something is terribly wrong' : 'everything is okay'
);
FUNDAMENTAL JAVASCRIPT

Conditional Action
if ( height > 6 )
{
console.log( 'you are tall' );
}
else if ( height > 5.5 )
{
console.log( 'you are of average height' );
}
else
{
console.log( 'you are shorter than average' );
}
FUNDAMENTAL JAVASCRIPT

Conditional Action
var msg = 'You are ';
switch ( true )
{
case height > 6:
msg += 'tall';
break;
case height > 5.5:
msg += 'of average height';
break;
default:
msg += 'shorter than average';
break;
}
console.log( msg );
FUNDAMENTAL JAVASCRIPT

For Loops
for ( initialization ; test condition ; alteration )
{
statement ;
}
FUNDAMENTAL JAVASCRIPT

For Loops
for ( var i=1; i<=10; i++ )
{
console.log( i );
}
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
FUNDAMENTAL JAVASCRIPT

For Loops
for ( var i=1; i<=10; i++ )
{
console.log( i );
}
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
var i = 1;
for ( ; i<=10; )
{
console.log( i++ );
}
// 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
FUNDAMENTAL JAVASCRIPT

While Loops
initialization ;
while ( test condition )
{
statement ;
alteration ;
}
FUNDAMENTAL JAVASCRIPT

While Loops
var i = 1;
while ( i < 10 )
{
console.log( i );
i += 2;
}
// 1, 3, 5, 7, 9
i; // 11
FUNDAMENTAL JAVASCRIPT

While Loops
var i = 11;
while ( i > 10 )
{
console.log( i++ );
}
// infinite loop (condition is always met)
FUNDAMENTAL JAVASCRIPT

While Loops
var i = 10;
while ( i )
{
console.log( i-- );
}
// 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
Functions
(i.e. reusable bundles of logic)
FUNDAMENTAL JAVASCRIPT

Functions
function name( arguments )
{
statements ;
}
FUNDAMENTAL JAVASCRIPT

Functions
function isTrue( value )
{
return value === true;
}
isTrue(
isTrue(
isTrue(
isTrue(

true ); // true
false ); // false
1 );
// false
0 );
// false
FUNDAMENTAL JAVASCRIPT

Functions
function add( a, b )
{
return a + b;
}
add( 1, 2 );
// 3
add( 4, 5 );
// 9
add( 1, 2, 3 ); // 3
FUNDAMENTAL JAVASCRIPT

Functions
function add( a, b, c )
{
return a + b + c;
}
add( 1, 2 );
// Not a number (NaN)
add( 4, 5 );
// NaN
add( 1, 2, 3 ); // 6
FUNDAMENTAL JAVASCRIPT

Functions
function add( a, b, c )
{
c = c || 0;
return a + b + c;
}
add( 1, 2 );
// 3
add( 4, 5 );
// 9
add( 1, 2, 3 ); // 6
FUNDAMENTAL JAVASCRIPT

Functions
function add()
{
var total = 0,
i = 0;
while ( arguments[i] )
{
total += arguments[i++];
}
return total;
}
add( 1, 2 );
add( 1, 2, 3 );
add( 1, 2, 3, 8 );

// 3
// 6
// 14
FUNDAMENTAL JAVASCRIPT

Functions
function add()
{
var total = 0,
i = 0;
while ( arguments[i] )
{
total += arguments[i++];
}
return total;
}
add(
add(
add(
add(

1,
1,
1,
1,

2 );
2, 3 );
2, 3, 8 );
2, ‘foo’, 8 );

// 3
// 6
// 14
// 3foo8
FUNDAMENTAL JAVASCRIPT

Functions
function add()
{
var total = 0,
i = 0;
while ( arguments[i] )
{
if ( typeof arguments[i] == 'number' )
{
total += arguments[i];
}
i++;
}
return total;
}
add(
add(
add(
add(

1,
1,
1,
1,

2 );
2, 3 );
2, 3, 8 );
2, ‘foo’, 8 );

// 3
// 6
// 14
// 11
FUNDAMENTAL JAVASCRIPT

Variables: Scope
function myFunc()
{
my_first_var = true;
var my_second_var = false;
}
window.my_first_var; // undefined
myFunc();
window.my_first_var; // true
window.my_second_var; // undefined
FUNDAMENTAL JAVASCRIPT

Variables: Scope
function myFunc()
{
my_first_var = true;
var my_second_var = false;
}
window.my_first_var; // undefined
myFunc();
window.my_first_var; // true
window.my_second_var; // undefined
window.myFunc; // function
FUNDAMENTAL JAVASCRIPT

Variables: Scope
function Silly()
{
a = 10;
return a *= 2;
}
var a = 10;
a;
Silly();
Silly();
a;

// 10
// 20
// 20
// 20
FUNDAMENTAL JAVASCRIPT

Variables: Scope
function Silly()
{
var a = 10;
return a *= 2;
}
var a = 10;
a;
Silly();
Silly();
a;

// 10
// 20
// 20
// 10
FUNDAMENTAL JAVASCRIPT

Variables: Scope
function Silly()
{
return a *= 2;
}
var a =
Silly();
Silly();
a;

10;
// 20
// 40
// 40
FUNDAMENTAL JAVASCRIPT

“Anonymous” Functions
window.onload = function(){
// do something
};
FUNDAMENTAL JAVASCRIPT

“Anonymous” Functions
(function(){
// do something
}());
FUNDAMENTAL JAVASCRIPT

“Anonymous” Functions
(
// encapsulates some code
);
FUNDAMENTAL JAVASCRIPT

“Anonymous” Functions
(
function(){
// defines an anonymous function
}
);
FUNDAMENTAL JAVASCRIPT

“Anonymous” Functions
(
function(){
}() // executes it immediately
);
FUNDAMENTAL JAVASCRIPT

“Anonymous” Functions
(function(){
// do something
}());
Objects
(i.e. organizers)
FUNDAMENTAL JAVASCRIPT

Objects
var Foo = {};
FUNDAMENTAL JAVASCRIPT

Objects
var Foo = {};
Foo.value = ‘bar’;
Foo.value; // ‘bar’
FUNDAMENTAL JAVASCRIPT

Objects
var Foo = {};
Foo.value = ‘bar’;
Foo.doSomething = function(){
console.log( this.value );
};
Foo.doSomething(); // ‘bar’
FUNDAMENTAL JAVASCRIPT

Almost everything’s an object
var
str_a = '1 2 3 4 5',
str_b = '6 7 8 9';
str_a.length;
str_a.concat( ' ', str_b );
str_a.indexOf( '1' );
str_a.lastIndexOf( ' ' );

// 9
// '1 2 3 4 5 6 7 8 9'
// 0
// 7
FUNDAMENTAL JAVASCRIPT

Almost everything’s an object
var arr = [ 1, 2, 3, 4, 5 ];
arr.length;
arr.join( ' ' );

// 5
// '1 2 3 4 5'

arr.pop();
arr;

// 5
// [ 1, 2, 3, 4 ]

arr.push( 6 );
arr;

// 5 (the new length)
// [ 1, 2, 3, 4, 6 ]

arr.reverse();
arr;

// [ 6, 4, 3, 2, 1 ]

arr.shift();
arr.unshift( 5 );
arr;

// 6
// 5 (the new length)
// [ 5, 4, 3, 2, 1 ]
The DOM
(i.e. your HTML)
FUNDAMENTAL JAVASCRIPT

HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=”utf-8">
<title>Page Title</title>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph with a
<a href="http://blog.easy-designs.net">link</a>.</p>
<ul>
<li>a list item</li>
<li>another list item</li>
<li>a third list item</li>
</ul>
</body>
</html>
FUNDAMENTAL JAVASCRIPT

HTML
html
FUNDAMENTAL JAVASCRIPT

HTML
html

head

meta

title

body

h1

p

ul

a

li

li

li
FUNDAMENTAL JAVASCRIPT

HTML
p

this is a paragraph
of text with a

a

href="http://blog.easy-designs.net"

.

link
Step 1:

Find Stuff
FUNDAMENTAL JAVASCRIPT

Find Stuff (in CSS)
p {
color: red;
}
#footer {
border: 1px solid;
}
#footer p {
color: black;
}
FUNDAMENTAL JAVASCRIPT

Find Stuff (in JS)
document.getElementsByTagName( 'p' );

document.getElementById( 'footer' );

document.getElementById( 'footer' )
.getElementsByTagName( 'p' );
FUNDAMENTAL JAVASCRIPT

Find Stuff (in jQuery)
$( 'p' );

$( '#footer' );

$( '#footer p' );
FUNDAMENTAL JAVASCRIPT

Find Stuff (in modern JS)
document.querySelector( 'p' );

document.querySelector( '#footer' );

document.querySelector( '#footer p' );
FUNDAMENTAL JAVASCRIPT

Libraries vs. Vanilla JS
Write less code

Write more code

Don’t worry about
browser differences

Deal with browser issues

More abstraction

More explicit

Extra Downloads

Built-in

Slower

Faster

81
FUNDAMENTAL JAVASCRIPT

Comparison
Syntax
document.getElementsByTagName( ‘p’ )
$( ‘p’ )
document.getElementById( ‘foo’ )

Operations/second
8,280,893
19,449
12,137,211

$( ‘#foo’ )

350,557

document.querySelector( ‘ul.first’ )

350,102

$( ‘ul.first’ )

18,450
FUNDAMENTAL JAVASCRIPT

Comparison
Syntax

Operations/second

document.getElementsByTagName( ‘p’ )

8,280,893

99.7% slower

19,449

$( ‘p’ )

document.getElementById( ‘foo’ )
$( ‘#foo’ )

97.1% slower

12,137,211
350,557

document.querySelector( ‘ul.first’ )

350,102

95% slower

18,450

$( ‘ul.first’ )
FUNDAMENTAL JAVASCRIPT

Traversing a document
var a = document.getElementsByTagName( 'a' ),
a_len = a.length,
i,
title;
for ( i=0; i < a_len; i++ )
{
title = a[i].getAttribute( 'title' );
if ( title )
{
console.log( title );
}
}
FUNDAMENTAL JAVASCRIPT

Traversing a document
node
node
node
node
node
node
node

.previousSibling; // node
.nextSibling;
// node
.parentNode;
// node
.childNodes;
// node list
.children;
// element collection
.firstChild;
// node
.lastChild;
// node
FUNDAMENTAL JAVASCRIPT

Digging in
node .nodeName;

// e.g. “em” or “#text”

node .nodeType;

// 1 = element
// 2 = attribute
// 3 = text

node .nodeValue;

// only attribute nodes
// and text nodes
Step 2:

Manipulate Stuff
FUNDAMENTAL JAVASCRIPT

Manipulate Stuff (in CSS)
p {
color: red;
}
#footer {
border: 1px solid;
}
#footer > p {
color: black;
}
FUNDAMENTAL JAVASCRIPT

Manipulate Stuff (in JS)
var abbr = document.createElement( 'abbr' );
var text = document.createTextNode( 'TN' );
abbr.setAttribute( 'title', 'Tennessee' );
abbr.appendChild( text );
FUNDAMENTAL JAVASCRIPT

Manipulating the DOM
element .appendChild( new_node );
element .insertBefore( new_node, target );
element .replaceChild( new_node, target );
FUNDAMENTAL JAVASCRIPT

Manipulating elements
var p = document.getElementsByTagName( 'p' )[0],

// collect

abbr = document.createElement( 'abbr' ),
text = document.createTextNode( 'TN' );

// generate

abbr.setAttribute( 'title', 'Tennessee' );
abbr.appendChild( text );
p.appendChild( abbr );

// combine
FUNDAMENTAL JAVASCRIPT

Cheap creation
// find #foo
var p = document.getElementById( '#foo' );
// create the model
var abbr = document.createElement( 'abbr' );
for ( i=0; i<100; i++ )
{
// append cheap copies to #foo
p.appendChild( abbr.cloneNode() );
}
FUNDAMENTAL JAVASCRIPT

Cheap creation
// create the model
var abbr = document.createElement( 'abbr' ),
a, b;
// add a child
abbr.appendChild(
document.createTextNode('hi')
);
// make cheap copies
a = abbr.cloneNode( false );
b = abbr.cloneNode( true );

// <abbr></abbr>
// <abbr>hi</abbr>
FUNDAMENTAL JAVASCRIPT

Bulk manipulation
// good for read/write of large chunks
element .innerHTML = new_content;
// avoid in general
document.write( new_content );
Exercise 1
FUNDAMENTAL JAVASCRIPT

HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=”utf-8">
<title>Example 1</title>
</head>
<body>
<blockquote cite="http://bit.ly/1n9zDlG">
<p>Progressive Enhancement, as a label for a strategy for
Web design, was coined by Steven Champeon in a series of
articles and presentations for Webmonkey and the SxSW
Interactive conference.</p>
</blockquote>
</body>
</html>
FUNDAMENTAL JAVASCRIPT

The plan
1.Find all the blockquotes in a document
2. Get the value of the cite attribute
3. Create a new anchor element node
4. Set the href attribute of the anchor to the value of the cite
5. Create a new text node with the word “source”
6. Insert the text into the anchor
7. Insert the anchor into the blockquote.

97
FUNDAMENTAL JAVASCRIPT

HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=”utf-8">
<title>Example 1</title>
</head>
<body>
<blockquote cite="http://bit.ly/1n9zDlG">
<p>Progressive Enhancement, as a label for a strategy for
Web design, was coined by Steven Champeon in a series of
articles and presentations for Webmonkey and the SxSW
Interactive conference.</p>
</blockquote>
<script>
...
</script>
</body>
</html>
FUNDAMENTAL JAVASCRIPT

My take
var quotes = document.getElementsByTagName( 'blockquote' );
for ( var i=0; i < quotes.length; i++ )
{
var source = quotes[i].getAttribute( 'cite' );
if ( source )
{
var link = document.createElement( 'a' );
link.setAttribute( 'href', source );
var text = document.createTextNode( 'source' );
link.appendChild( text );
quotes[i].appendChild( link );
}
}
Exercise 2
FUNDAMENTAL JAVASCRIPT

HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=”utf-8">
<title>Example 2</title>
</head>
<body>
<p>This is a <em>test</em> of a simple email obfuscation
technique. It relies on an obfuscated email address placed in
an emphasis element (<code>em</code>) and replaces it with a
<code>mailto:</code> link for the valid email address.</p>
<p>For example, this email address&#8212;<em>aaron [at]
easy [dash] designs [dot] net</em>&#8212; should be
converted.</p>
</body>
</html>
FUNDAMENTAL JAVASCRIPT

The plan
1. Find all the em elements in a document
2. Make sure the content passes our obfuscation test (e.g. contains “[at]”)
3. Grab the content and convert bracketed terms to their equivalents to
reveal the email address (e.g. “[at]” to “@”)
4. Create a new anchor
5. Set the content to be the email address
6. Set the mailto: href
7. Replace the em with the anchor

102
FUNDAMENTAL JAVASCRIPT

HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=”utf-8">
<title>Example 2</title>
</head>
<body>
<p>This is a <em>test</em> of a simple email obfuscation
technique. It relies on an obfuscated email address placed in
an emphasis element (<code>em</code>) and replaces it with a
<code>mailto:</code> link for the valid email address.</p>
<p>For example, this email address&#8212;<em>aaron [at]
easy [dash] designs [dot] net</em>&#8212; should be
converted.</p>
</body>
</html>
FUNDAMENTAL JAVASCRIPT

My take
var ems = document.getElementsByTagName('em'),
i = ems.length, str, a;
while ( i-- )
{
if ( ems[i].firstChild &&
ems[i].firstChild.nodeValue.match( /s*[at]s*/g ) )
{
str = ems[i].firstChild.nodeValue
.replace( /s*[dot]s*/g, '.' )
.replace( /s*[at]s*/g, '@' )
.replace( /s*[dash]s*/g, '-' );
a = document.createElement( 'a' );
a.setAttribute( 'href', 'mailto:' + str );
a.appendChild( document.createTextNode( str ) );
ems[i].parentNode.replaceChild( a, ems[i] );
}
}

Contenu connexe

Tendances (20)

JavaScript Programming
JavaScript ProgrammingJavaScript Programming
JavaScript Programming
 
PHP FUNCTIONS
PHP FUNCTIONSPHP FUNCTIONS
PHP FUNCTIONS
 
Event In JavaScript
Event In JavaScriptEvent In JavaScript
Event In JavaScript
 
Jquery
JqueryJquery
Jquery
 
Javascript basics
Javascript basicsJavascript basics
Javascript basics
 
3. Java Script
3. Java Script3. Java Script
3. Java Script
 
Javascript
JavascriptJavascript
Javascript
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
jQuery
jQueryjQuery
jQuery
 
Javascript arrays
Javascript arraysJavascript arrays
Javascript arrays
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Java script final presentation
Java script final presentationJava script final presentation
Java script final presentation
 
Loops in java script
Loops in java scriptLoops in java script
Loops in java script
 
JavaScript Basics
JavaScript BasicsJavaScript Basics
JavaScript Basics
 
jQuery
jQueryjQuery
jQuery
 
Java Script ppt
Java Script pptJava Script ppt
Java Script ppt
 
php
phpphp
php
 
javaScript.ppt
javaScript.pptjavaScript.ppt
javaScript.ppt
 
JavaScript & Dom Manipulation
JavaScript & Dom ManipulationJavaScript & Dom Manipulation
JavaScript & Dom Manipulation
 

Similaire à Fundamental JavaScript concepts explained in depth

FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6FrontDays
 
Avinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPressAvinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPresswpnepal
 
Chaining et composition de fonctions avec lodash / underscore
Chaining et composition de fonctions avec lodash / underscoreChaining et composition de fonctions avec lodash / underscore
Chaining et composition de fonctions avec lodash / underscoreNicolas Carlo
 
Javascript: the important bits
Javascript: the important bitsJavascript: the important bits
Javascript: the important bitsChris Saylor
 
Chaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreChaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreNicolas Carlo
 
Javascript best practices
Javascript best practicesJavascript best practices
Javascript best practicesManav Gupta
 
2013-06-15 - Software Craftsmanship mit JavaScript
2013-06-15 - Software Craftsmanship mit JavaScript2013-06-15 - Software Craftsmanship mit JavaScript
2013-06-15 - Software Craftsmanship mit JavaScriptJohannes Hoppe
 
2013-06-24 - Software Craftsmanship with JavaScript
2013-06-24 - Software Craftsmanship with JavaScript2013-06-24 - Software Craftsmanship with JavaScript
2013-06-24 - Software Craftsmanship with JavaScriptJohannes Hoppe
 
Workshop 5: JavaScript testing
Workshop 5: JavaScript testingWorkshop 5: JavaScript testing
Workshop 5: JavaScript testingVisual Engineering
 
Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Lin Yo-An
 
JavaScript for PHP developers
JavaScript for PHP developersJavaScript for PHP developers
JavaScript for PHP developersStoyan Stefanov
 
04 Advanced Javascript
04 Advanced Javascript04 Advanced Javascript
04 Advanced Javascriptcrgwbr
 
JavaScript Functions
JavaScript FunctionsJavaScript Functions
JavaScript FunctionsColin DeCarlo
 
05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboardsDenis Ristic
 

Similaire à Fundamental JavaScript concepts explained in depth (20)

FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
FrontDays #3. Иван Федяев, Эволюция JavaScript. Обзор нововведений ECMAScript 6
 
Avinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPressAvinash Kundaliya: Javascript and WordPress
Avinash Kundaliya: Javascript and WordPress
 
Chaining et composition de fonctions avec lodash / underscore
Chaining et composition de fonctions avec lodash / underscoreChaining et composition de fonctions avec lodash / underscore
Chaining et composition de fonctions avec lodash / underscore
 
Javascript: the important bits
Javascript: the important bitsJavascript: the important bits
Javascript: the important bits
 
JavaScript patterns
JavaScript patternsJavaScript patterns
JavaScript patterns
 
Chaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreChaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscore
 
Java script for web developer
Java script for web developerJava script for web developer
Java script for web developer
 
Javascript best practices
Javascript best practicesJavascript best practices
Javascript best practices
 
Say It With Javascript
Say It With JavascriptSay It With Javascript
Say It With Javascript
 
2013-06-15 - Software Craftsmanship mit JavaScript
2013-06-15 - Software Craftsmanship mit JavaScript2013-06-15 - Software Craftsmanship mit JavaScript
2013-06-15 - Software Craftsmanship mit JavaScript
 
2013-06-24 - Software Craftsmanship with JavaScript
2013-06-24 - Software Craftsmanship with JavaScript2013-06-24 - Software Craftsmanship with JavaScript
2013-06-24 - Software Craftsmanship with JavaScript
 
Short intro to ECMAScript
Short intro to ECMAScriptShort intro to ECMAScript
Short intro to ECMAScript
 
Workshop 5: JavaScript testing
Workshop 5: JavaScript testingWorkshop 5: JavaScript testing
Workshop 5: JavaScript testing
 
Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015Code Generation in PHP - PHPConf 2015
Code Generation in PHP - PHPConf 2015
 
JavaScript for PHP developers
JavaScript for PHP developersJavaScript for PHP developers
JavaScript for PHP developers
 
Javascript - Beyond-jQuery
Javascript - Beyond-jQueryJavascript - Beyond-jQuery
Javascript - Beyond-jQuery
 
Introduccion a Jasmin
Introduccion a JasminIntroduccion a Jasmin
Introduccion a Jasmin
 
04 Advanced Javascript
04 Advanced Javascript04 Advanced Javascript
04 Advanced Javascript
 
JavaScript Functions
JavaScript FunctionsJavaScript Functions
JavaScript Functions
 
05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards05 JavaScript #burningkeyboards
05 JavaScript #burningkeyboards
 

Plus de Aaron Gustafson

Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Aaron Gustafson
 
Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Aaron Gustafson
 
Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Aaron Gustafson
 
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Aaron Gustafson
 
Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Aaron Gustafson
 
Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Aaron Gustafson
 
Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Aaron Gustafson
 
Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Aaron Gustafson
 
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Aaron Gustafson
 
PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]Aaron Gustafson
 
Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Aaron Gustafson
 
Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Aaron Gustafson
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Aaron Gustafson
 
The Web Should Just Work for Everyone
The Web Should Just Work for EveryoneThe Web Should Just Work for Everyone
The Web Should Just Work for EveryoneAaron Gustafson
 
Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Aaron Gustafson
 
Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Aaron Gustafson
 
Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Aaron Gustafson
 
Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Aaron Gustafson
 
Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Aaron Gustafson
 
Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Aaron Gustafson
 

Plus de Aaron Gustafson (20)

Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]
 
Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]
 
Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]
 
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
 
Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?
 
Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]
 
Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]
 
Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]
 
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
 
PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]
 
Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]
 
Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]
 
The Web Should Just Work for Everyone
The Web Should Just Work for EveryoneThe Web Should Just Work for Everyone
The Web Should Just Work for Everyone
 
Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]
 
Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]
 
Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2
 
Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1
 
Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]
 
Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]
 

Dernier

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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 WorkerThousandEyes
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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 RobisonAnna Loughnan Colquhoun
 
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 organizationRadu Cotescu
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Dernier (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

Fundamental JavaScript concepts explained in depth