Vous êtes sur la page 1sur 21

Mohammed Irfan

 JavaScript is a stripped down version of Java  JavaScript does not exist outside browsers  JavaScript is inconsistent and buggy  JavaScript is not object-orientated

Birth of Mocha, then rename to LiveScript Netscape and Sun collaboration for Java in browsers; LiveScript gets renamed to JavaScript IE team reverse engineers JavaScript to JScript Browser war begins Standardization of JavaScript at ECMA; ECMAScript becomes the official name  Rise of Ajax  JavaScript libraries emerge  ECMAScript 5
     

 Semicolon insertion  typeof and instanceof  with and eval  == and !=  new

 Loose Typing  Dynamic Objects  Object / Array Literals  Functions / Lambdas

 Self
prototypal inheritance dynamic objects

 Java
syntax conventions

 Scheme
lambda loose typing

 Perl
regular expressions

 Numbers  Strings  Booleans  Objects  Functions

   

Number String Boolean Object


Function Array Date RegExp

 Null  Undefined

 Only one number type


No integers

 64-bit floating point IEEE-754 (aka Double)  Numbers are Objects

(a + b) + c === a + (b + c) Produces false for some values of a, b, c. Integers under 9007199254740992 (9 quadrillion) are ok.
9007199254740992 === 9007199254740992 + 1

a = 0.1; b = 0.2; c = 0.3; (a + b) + c === a + (b + c) > false

 Special number: Not a Number  Result of undefined or erroneous operations  Toxic: any arithmetic operation with NaN as an input will have NaN as a result  NaN is not equal to anything, including NaN  NaN === NaN is false  NaN !== NaN is true

 A sequence of 0 or more 16-bit Unicode characters  No separate character type  Characters are represented as strings with length of 1  Strings are immutable  Similar strings are equal ( === )  String literals can use single or double quotes with \

escapement.  Strings are Objects

> "hello".charAt(0) h > "hello, world".replace("hello", "goodbye") goodbye, world > "hello".toUpperCase() HELLO

 null = deliberately no value  undefined = no value assigned yet


Variables declared but not initialized Object/array members that don't exist

 Boolean type: true or false  Everything else is truthy or falsy 0, "", NaN, null and undefined are falsy
Everything else is truthy

 Boolean operations: &&, || and !

 Simple key-value pairs, like:


HashMaps in Java Associative arrays in PHP

 Key is a string; value can be anything  Key is unique within an object

var obj = new Object(); Or var obj = {}; These are semantically equivalent; the second is called object literal syntax and is more convenient.

obj.name = "My Name" var name = obj.name; Or obj["name"] = "My Name"; var name = obj["name"]; Semantically equivalent; the second uses strings so can be decided at run-time (and can be used for reserved words)

var obj = { name: "Carrot", "for": "Max", details: { color: "orange", size: 12 } } > obj.details.color Orange > obj["details"]["size"] 12

Vous aimerez peut-être aussi