ellak javascript day

32
ΕΛ/ΛΑΚ JavaScript Day - Jan 29, 2016 JavaScript: The Story behind

Upload: greecejs

Post on 12-Apr-2017

187 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Ellak JavaScript Day

ΕΛ/ΛΑΚ JavaScript Day - Jan 29, 2016

JavaScript:The Story behind

Page 2: Ellak JavaScript Day

1995

Page 3: Ellak JavaScript Day
Page 4: Ellak JavaScript Day
Page 5: Ellak JavaScript Day
Page 6: Ellak JavaScript Day
Page 7: Ellak JavaScript Day
Page 8: Ellak JavaScript Day
Page 9: Ellak JavaScript Day
Page 10: Ellak JavaScript Day

Browser Wars: Round 1 – Fight!

Page 11: Ellak JavaScript Day

Mosaic

Air Mosaic Spyglass MosaicMosaic Netscape

Internet ExplorerNetscape Navigator

Browser genealogy (early days)

Page 12: Ellak JavaScript Day

1994 Q1 1994 Q2 1995 Q1 1995 Q2 1996 Q2 1997 Q1 1997 Q2 1998 Q1 1998 Q20%

20%

40%

60%

80%

100%

120%

97%

68%

9%

0% 0% 0% 0% 0% 0%0%

18%

54%

89%

80% 81%

60%

70%64%

0% 0% 0%4%

12% 12%15%

23%

32%

Browser Usage 1994 Q1 – 1998 Q2

Mosaic Netscape Navigator Internet ExplorerSOURCE: WWW USER SURVEY, GRAPHICS, VISUALIZATION & USABILITY CENTER, GEORGIA INSTITUTE OF TECHNOLOGY

Page 13: Ellak JavaScript Day
Page 14: Ellak JavaScript Day

Java Scheme Self

Mocha

LiveScript

JavaScript

10 days

Licensed by

renamed

renamed

Page 15: Ellak JavaScript Day
Page 16: Ellak JavaScript Day
Page 17: Ellak JavaScript Day
Page 18: Ellak JavaScript Day

European ComputerManufacturers Association

EcmaScript

Page 19: Ellak JavaScript Day

• Netscape Enterprise Server

• Microsoft Internet Information Server (IIS)

• Mozilla Rhino• Node.js

JavaScript on the server

Dec 1995

Page 20: Ellak JavaScript Day
Page 21: Ellak JavaScript Day

Why did JavaScript become so popular imo?

1. It’s everywhere2. It’s easy (to begin with)3. It has excellent async features

This is Sparta

Page 22: Ellak JavaScript Day
Page 23: Ellak JavaScript Day

Values and types

• Dynamic• Primitives & Object(s)

• var• typeof

Page 24: Ellak JavaScript Day

var a; typeof a; // "undefined"

a = "hello world"; typeof a; // "string"

a = 42; typeof a; // "number"

a = true; typeof a; // "boolean"

a = { a: "hello world", b: 42, c: true };

typeof a; // "object"

a = undefined; typeof a; // "undefined"

a = { b: "c" }; typeof a; // "object"

Page 25: Ellak JavaScript Day

Values and types (2)

• Hoisting• Coercion

• Boxing

Page 26: Ellak JavaScript Day

var a = 2;

foo(); // works because `foo()` // declaration is "hoisted"

function foo() { a = 3; console.log( a ); // 3

var a; // declaration is "hoisted" // to the top of `foo()`

}

console.log( a ); // 2

Page 27: Ellak JavaScript Day

var a = "42";

var b = Number( a ); // explicitly coerced here

a; // "42" b; // 42 -- the number!

var a = "42";

var b = a * 1; // "42" implicitly coerced to 42 here

a; // "42" b; // 42 -- the number!

Page 28: Ellak JavaScript Day

var a = "abc";

a.length; // 3 a.toUpperCase(); // "ABC"

var a = new String( "abc" ); // Manually boxingvar b = new Number( 42 ); var c = new Boolean( true );

a.valueOf(); // "abc" b.valueOf(); // 42 c.valueOf(); // true

b = a + ""; // ‘b’ has the unboxed primitive value "abc"

typeof a; // "object" typeof b; // "string"

Page 29: Ellak JavaScript Day

Just a few more things

• Function• Scope• Closure

Page 30: Ellak JavaScript Day

function foo() { return 42; }

foo.bar = "hello world";

typeof foo; // "function" typeof foo(); // "number" typeof foo.bar; // "string“

function foo(a) { console.log( a + b ); }

var b = 2;foo( 2 ); // 4

Page 31: Ellak JavaScript Day

function makeAdder(x) { return function(y) { return x + y; }; }

var add5 = makeAdder(5); var add10 = makeAdder(10);

console.log(add5(2)); // 7 console.log(add10(2)); // 12

Page 32: Ellak JavaScript Day