ellak javascript day
TRANSCRIPT
![Page 1: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/1.jpg)
ΕΛ/ΛΑΚ JavaScript Day - Jan 29, 2016
JavaScript:The Story behind
![Page 2: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/2.jpg)
1995
![Page 3: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/3.jpg)
![Page 4: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/4.jpg)
![Page 5: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/5.jpg)
![Page 6: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/6.jpg)
![Page 7: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/7.jpg)
![Page 8: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/8.jpg)
![Page 9: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/9.jpg)
![Page 10: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/10.jpg)
Browser Wars: Round 1 – Fight!
![Page 11: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/11.jpg)
Mosaic
Air Mosaic Spyglass MosaicMosaic Netscape
Internet ExplorerNetscape Navigator
Browser genealogy (early days)
![Page 12: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/13.jpg)
![Page 14: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/14.jpg)
Java Scheme Self
Mocha
LiveScript
JavaScript
10 days
Licensed by
renamed
renamed
![Page 15: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/15.jpg)
![Page 16: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/16.jpg)
![Page 17: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/17.jpg)
![Page 18: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/18.jpg)
European ComputerManufacturers Association
EcmaScript
![Page 19: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/19.jpg)
• Netscape Enterprise Server
• Microsoft Internet Information Server (IIS)
• Mozilla Rhino• Node.js
JavaScript on the server
Dec 1995
![Page 20: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/20.jpg)
![Page 21: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/22.jpg)
![Page 23: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/23.jpg)
Values and types
• Dynamic• Primitives & Object(s)
• var• typeof
![Page 24: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/25.jpg)
Values and types (2)
• Hoisting• Coercion
• Boxing
![Page 26: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/29.jpg)
Just a few more things
• Function• Scope• Closure
![Page 30: Ellak JavaScript Day](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022081605/58a9b7471a28ab1f1a8b4bb1/html5/thumbnails/32.jpg)