SlideShare ist ein Scribd-Unternehmen logo
1 von 52
JavaScript 101
                      Sven Lito - Front-end Developer
                 slito@tagworldwide.com + @svenlito + http://svenlito.com




Friday, 13 May 2011
Friday, 13 May 2011
What is JavaScript ?




Friday, 13 May 2011
JavaScript:
           ★          Created by Brendan Eich 1995
           ★          Developed in less than 2 Weeks
           ★          First release in NetScape 2
           ★          Influenced by Scheme,Java,Self
           ★          Interpreted language
           ★          Object-Oriented



Friday, 13 May 2011
What it’s not..




Friday, 13 May 2011
JavaScript




                                               jQuery
      probs to: rebecca murphey


Friday, 13 May 2011
Friday, 13 May 2011
JavaScript Basics




Friday, 13 May 2011
Variable Declaration:


             var arnoldSchwarzenegger = "Actor",
                 isNiceGuy = false;




Friday, 13 May 2011
Function Declaration:

                      function arniQuote() {
                         return "I'll be back.";
                      };




Friday, 13 May 2011
function makeMovie(withLindaHamilton) {
             var rad = withLindaHamilton || false;
          };




Friday, 13 May 2011
isGovernor ? "Cool Dude" : "No? Awww..";




Friday, 13 May 2011
Comparison Operators




Friday, 13 May 2011
★ = Assignment

                      ★ == Equality

                      ★ === Identity




Friday, 13 May 2011
// Assignment
                var bestFriend = "T1000";


                // Equality
                if (5 == "5") {
                  //true
                }


                // Identity
                if (5 === "5") {
                  //false
                }


Friday, 13 May 2011
// Short-circuit logic
                if (true || false)

                if (false && true)

                // Makes this code safe
                if (obj && obj.property)



Friday, 13 May 2011
Typecasting, baby!
                      "..changing an entity of one data type into another."




Friday, 13 May 2011
// true
                5 == "5"

                // "123"
                "1" + 2 + 3;




Friday, 13 May 2011
// 6, manual type conversion
                parseInt("1", 10) + 2 + 3;

                      parseInt: Parses a string argument and returns an
                           integer of the specified radix or base.




Friday, 13 May 2011
JavaScript data types




Friday, 13 May 2011
Primitive data types:

                      ★   Undefined

                      ★   Null

                      ★   Boolean

                      ★   Number

                      ★   String

                      ★   object



Friday, 13 May 2011
Primitive data types:

                      ★   Undefined

                      ★   Null

                      ★   Boolean

                      ★   Number

                      ★   String

                      ★   object << not this guy



Friday, 13 May 2011
Primitive data types:

                      ★   Undefined

                      ★   Null

                      ★   Boolean

                      ★   Number

                      ★   String

                      ★   object      Hi, I’m
                                      smart..



Friday, 13 May 2011
"Everything in JavaScript
                      acts like an object, with
                      the only two exceptions
                      being null and undefined."

                              - Arnold Schwarzenegger




Friday, 13 May 2011
Type checking



Friday, 13 May 2011
typeof return values:
                      ★   string

                      ★   number

                      ★   boolean

                      ★   function

                      ★   object

                      ★   undefined


Friday, 13 May 2011
typeof fanClub // "undefined"

                var title = "Conan the Barbarian";
                typeof title // Equals "string"

                var age = 64;
                typeof age // Equals "number"




Friday, 13 May 2011
function anotherQuote() {
            return "If it bleeds, we can kill it.";
          }

          typeof anotherQuote; // "function"




Friday, 13 May 2011
var obj = {};
       typeof obj // "object"

       var arr = ["A", "R", "N", "O", "L", "D"];
       typeof arr // "object"




Friday, 13 May 2011
var obj = {};
       typeof obj // "object"

       var arr = ["A", "R", "N", "O", "L", "D"];
       typeof arr // "object"
                                   Blimey!




Friday, 13 May 2011
using instanceof



Friday, 13 May 2011
obj instanceof Array // false
         arr instanceof Array // true




Friday, 13 May 2011
Functions


Friday, 13 May 2011
procedural


                function notAHit() {
                  return "Stay Hungry";
                }




Friday, 13 May 2011
Functions as variables

           var wroteScript = function () {
              return "The 6th Day";
           };

           wroteScript();




Friday, 13 May 2011
Anonymous

         $('#conan').bind('click', function (e) {
           alert("some string");
         });



                      I’m in your jQuery’s binding yo clicks..




Friday, 13 May 2011
Immediately-Invoked
                      Function Expression
                            (IIFE)

                (function() {
                  var judgmentDay = "Shot in 1991";
                  return judgmentDay;
                })();




Friday, 13 May 2011
(function() {
                  var judgmentDay = "Shot in 1991";
                  return judgmentDay;
                })();




                      Invocation operator



Friday, 13 May 2011
Function arguments




Friday, 13 May 2011
★ the arguments collection

                      ★ Property: arguments.length

                      ★ NOT an array   (array-like object)




Friday, 13 May 2011
function sum(a, b, c) {
                        return a + b + c;
                      }

                      sum(1, 2, 3); // 6
                      sum(1, 2); // NaN




Friday, 13 May 2011
function sum() {
                  var sum = 0,
                      l = arguments.length,
                      i = 0;

                      for (i; i < l; i++) {
                        sum += arguments[i];
                      }
                      return sum;
                }

                sum(1, 2, 3); // 6
                sum(1, 2); // 3
                sum(1, 2, 7, 11, 5); // 26


Friday, 13 May 2011
Objects



Friday, 13 May 2011
Object literal

                      var arnold = {
                         name : "Arnold Schwarzenegger",
                         gotAnOscar : true
                      };

                      alert(arnold.name);   // "Arnold Schwarzenegger"




Friday, 13 May 2011
Object notation

                       arnold["arms"] = 2;
                       arnold.arms = 2;



                       did you just say array?



Friday, 13 May 2011
Object notation

                          arnold["arms"] = 2;
                          arnold.arms = 2;



                      Same thing, different syntax



Friday, 13 May 2011
works with any object


                      var arnold = {};

                      arnold[1972] = "Year of birth";
                      arnold["born"] = 1972;
                      arnold[true] = false;




Friday, 13 May 2011
var decentMovie = {
        title : "Red Sonia",
        year : 1997
     };

     for (var item in decentMovie) {
       /*
          make sure we only check decentMovie
          and not the whole prototype chain
       */
       if (decentMovie.hasOwnProperty(item)) {
          alert(item + ": " + decentMovie[item]);
       }
     }


Friday, 13 May 2011
Arni aside, srsly.
                      How do I use all of
                      this in real life?



Friday, 13 May 2011
// TAG namespace
                TAG = window.TAG || {};

                var TAG = (function ($) {

                      // private vars
                      var
                        privateVar1 = $('#boo-selecta'),
                        privateVar2 = $('#braaap'),
                        badAssArray = [];

                      return {
                         // approvals module
                         approvals: {
                           methodCall1: function (jQuery, TAG) {
                             alert("some string");
                           }
                         }
                      };

                })(jQuery);

                TAG.approvals.methodCall1(); // "some string"
Friday, 13 May 2011
Questions??



Friday, 13 May 2011
Thanks!


    email: slito@tagworldwide.com
    twitter: @svenlito


Friday, 13 May 2011

Weitere ähnliche Inhalte

Ähnlich wie JavaScript 101

JavaScript por debaixo dos panos
JavaScript por debaixo dos panosJavaScript por debaixo dos panos
JavaScript por debaixo dos panosDouglas Campos
 
Magento Imagine eCommerce Conference - February 2011 - Unit Testing with Magento
Magento Imagine eCommerce Conference - February 2011 - Unit Testing with MagentoMagento Imagine eCommerce Conference - February 2011 - Unit Testing with Magento
Magento Imagine eCommerce Conference - February 2011 - Unit Testing with Magentovarien
 
Magento's Imagine eCommerce Conference 2011 - Unit Testing with Magento
Magento's Imagine eCommerce Conference 2011 - Unit Testing with MagentoMagento's Imagine eCommerce Conference 2011 - Unit Testing with Magento
Magento's Imagine eCommerce Conference 2011 - Unit Testing with MagentoMagentoImagine
 
Javascript - How to avoid the bad parts
Javascript - How to avoid the bad partsJavascript - How to avoid the bad parts
Javascript - How to avoid the bad partsMikko Ohtamaa
 
Puppet camp europe 2011 hackability
Puppet camp europe 2011   hackabilityPuppet camp europe 2011   hackability
Puppet camp europe 2011 hackabilityPuppet
 
international PHP2011_ilia alshanetsky_Hidden Features of PHP
international PHP2011_ilia alshanetsky_Hidden Features of PHPinternational PHP2011_ilia alshanetsky_Hidden Features of PHP
international PHP2011_ilia alshanetsky_Hidden Features of PHPsmueller_sandsmedia
 

Ähnlich wie JavaScript 101 (8)

Testable Javascript
Testable JavascriptTestable Javascript
Testable Javascript
 
JavaScript por debaixo dos panos
JavaScript por debaixo dos panosJavaScript por debaixo dos panos
JavaScript por debaixo dos panos
 
Magento Imagine eCommerce Conference - February 2011 - Unit Testing with Magento
Magento Imagine eCommerce Conference - February 2011 - Unit Testing with MagentoMagento Imagine eCommerce Conference - February 2011 - Unit Testing with Magento
Magento Imagine eCommerce Conference - February 2011 - Unit Testing with Magento
 
Magento's Imagine eCommerce Conference 2011 - Unit Testing with Magento
Magento's Imagine eCommerce Conference 2011 - Unit Testing with MagentoMagento's Imagine eCommerce Conference 2011 - Unit Testing with Magento
Magento's Imagine eCommerce Conference 2011 - Unit Testing with Magento
 
Scala 101-bcndevcon
Scala 101-bcndevconScala 101-bcndevcon
Scala 101-bcndevcon
 
Javascript - How to avoid the bad parts
Javascript - How to avoid the bad partsJavascript - How to avoid the bad parts
Javascript - How to avoid the bad parts
 
Puppet camp europe 2011 hackability
Puppet camp europe 2011   hackabilityPuppet camp europe 2011   hackability
Puppet camp europe 2011 hackability
 
international PHP2011_ilia alshanetsky_Hidden Features of PHP
international PHP2011_ilia alshanetsky_Hidden Features of PHPinternational PHP2011_ilia alshanetsky_Hidden Features of PHP
international PHP2011_ilia alshanetsky_Hidden Features of PHP
 

Kürzlich hochgeladen

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

JavaScript 101

  • 1. JavaScript 101 Sven Lito - Front-end Developer slito@tagworldwide.com + @svenlito + http://svenlito.com Friday, 13 May 2011
  • 3. What is JavaScript ? Friday, 13 May 2011
  • 4. JavaScript: ★ Created by Brendan Eich 1995 ★ Developed in less than 2 Weeks ★ First release in NetScape 2 ★ Influenced by Scheme,Java,Self ★ Interpreted language ★ Object-Oriented Friday, 13 May 2011
  • 6. JavaScript jQuery probs to: rebecca murphey Friday, 13 May 2011
  • 9. Variable Declaration: var arnoldSchwarzenegger = "Actor", isNiceGuy = false; Friday, 13 May 2011
  • 10. Function Declaration: function arniQuote() { return "I'll be back."; }; Friday, 13 May 2011
  • 11. function makeMovie(withLindaHamilton) { var rad = withLindaHamilton || false; }; Friday, 13 May 2011
  • 12. isGovernor ? "Cool Dude" : "No? Awww.."; Friday, 13 May 2011
  • 14. ★ = Assignment ★ == Equality ★ === Identity Friday, 13 May 2011
  • 15. // Assignment var bestFriend = "T1000"; // Equality if (5 == "5") { //true } // Identity if (5 === "5") { //false } Friday, 13 May 2011
  • 16. // Short-circuit logic if (true || false) if (false && true) // Makes this code safe if (obj && obj.property) Friday, 13 May 2011
  • 17. Typecasting, baby! "..changing an entity of one data type into another." Friday, 13 May 2011
  • 18. // true 5 == "5" // "123" "1" + 2 + 3; Friday, 13 May 2011
  • 19. // 6, manual type conversion parseInt("1", 10) + 2 + 3; parseInt: Parses a string argument and returns an integer of the specified radix or base. Friday, 13 May 2011
  • 21. Primitive data types: ★ Undefined ★ Null ★ Boolean ★ Number ★ String ★ object Friday, 13 May 2011
  • 22. Primitive data types: ★ Undefined ★ Null ★ Boolean ★ Number ★ String ★ object << not this guy Friday, 13 May 2011
  • 23. Primitive data types: ★ Undefined ★ Null ★ Boolean ★ Number ★ String ★ object Hi, I’m smart.. Friday, 13 May 2011
  • 24. "Everything in JavaScript acts like an object, with the only two exceptions being null and undefined." - Arnold Schwarzenegger Friday, 13 May 2011
  • 26. typeof return values: ★ string ★ number ★ boolean ★ function ★ object ★ undefined Friday, 13 May 2011
  • 27. typeof fanClub // "undefined" var title = "Conan the Barbarian"; typeof title // Equals "string" var age = 64; typeof age // Equals "number" Friday, 13 May 2011
  • 28. function anotherQuote() { return "If it bleeds, we can kill it."; } typeof anotherQuote; // "function" Friday, 13 May 2011
  • 29. var obj = {}; typeof obj // "object" var arr = ["A", "R", "N", "O", "L", "D"]; typeof arr // "object" Friday, 13 May 2011
  • 30. var obj = {}; typeof obj // "object" var arr = ["A", "R", "N", "O", "L", "D"]; typeof arr // "object" Blimey! Friday, 13 May 2011
  • 32. obj instanceof Array // false arr instanceof Array // true Friday, 13 May 2011
  • 34. procedural function notAHit() { return "Stay Hungry"; } Friday, 13 May 2011
  • 35. Functions as variables var wroteScript = function () { return "The 6th Day"; }; wroteScript(); Friday, 13 May 2011
  • 36. Anonymous $('#conan').bind('click', function (e) { alert("some string"); }); I’m in your jQuery’s binding yo clicks.. Friday, 13 May 2011
  • 37. Immediately-Invoked Function Expression (IIFE) (function() { var judgmentDay = "Shot in 1991"; return judgmentDay; })(); Friday, 13 May 2011
  • 38. (function() { var judgmentDay = "Shot in 1991"; return judgmentDay; })(); Invocation operator Friday, 13 May 2011
  • 40. ★ the arguments collection ★ Property: arguments.length ★ NOT an array (array-like object) Friday, 13 May 2011
  • 41. function sum(a, b, c) { return a + b + c; } sum(1, 2, 3); // 6 sum(1, 2); // NaN Friday, 13 May 2011
  • 42. function sum() { var sum = 0, l = arguments.length, i = 0; for (i; i < l; i++) { sum += arguments[i]; } return sum; } sum(1, 2, 3); // 6 sum(1, 2); // 3 sum(1, 2, 7, 11, 5); // 26 Friday, 13 May 2011
  • 44. Object literal var arnold = { name : "Arnold Schwarzenegger", gotAnOscar : true }; alert(arnold.name); // "Arnold Schwarzenegger" Friday, 13 May 2011
  • 45. Object notation arnold["arms"] = 2; arnold.arms = 2; did you just say array? Friday, 13 May 2011
  • 46. Object notation arnold["arms"] = 2; arnold.arms = 2; Same thing, different syntax Friday, 13 May 2011
  • 47. works with any object var arnold = {}; arnold[1972] = "Year of birth"; arnold["born"] = 1972; arnold[true] = false; Friday, 13 May 2011
  • 48. var decentMovie = { title : "Red Sonia", year : 1997 }; for (var item in decentMovie) { /* make sure we only check decentMovie and not the whole prototype chain */ if (decentMovie.hasOwnProperty(item)) { alert(item + ": " + decentMovie[item]); } } Friday, 13 May 2011
  • 49. Arni aside, srsly. How do I use all of this in real life? Friday, 13 May 2011
  • 50. // TAG namespace TAG = window.TAG || {}; var TAG = (function ($) { // private vars var privateVar1 = $('#boo-selecta'), privateVar2 = $('#braaap'), badAssArray = []; return { // approvals module approvals: { methodCall1: function (jQuery, TAG) { alert("some string"); } } }; })(jQuery); TAG.approvals.methodCall1(); // "some string" Friday, 13 May 2011
  • 52. Thanks! email: slito@tagworldwide.com twitter: @svenlito Friday, 13 May 2011