рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП 24 рдпреБрдХреНрддрд┐рдпрд╛рдБ

рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдореВрд▓ рджрд┐рдирд╛рдВрдХ рдЬрдирд╡рд░реА 2009 рд╣реИ, рдЗрд╕рдиреЗ рдЕрдкрдиреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдЕрдм рднреА рдирд╣реАрдВ рдЦреЛрдИ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рднреА рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдкрд╛рдПрдВрдЧреЗред

1. === рдХреЗ рдмрдЬрд╛рдп === рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рддреБрд▓рдирд╛рддреНрдордХ рд╕рдВрдЪрд╛рд▓рди рд╣реИрдВ: === /! == рдФрд░ == =! =ред рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд░реВрдк рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
"рдпрджрд┐ рджреЛ рдСрдкрд░реЗрдВрдб рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдФрд░ рдореВрд▓реНрдп рдХреЗ рд╣реИрдВ, рддреЛ === рд╕рд╣реА рд▓реМрдЯреЗрдЧрд╛, рдФрд░! == рдЧрд▓рдд"
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рдж рдЧреБрдб рдкрд╛рд░реНрдЯреНрд╕


реи.рдореВрд▓ = рдмреБрд░рд╛рдИ


рдЙрди рдЕрдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, eval рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рдХ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рди рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕реБрд░рдХреНрд╖рд╛ рдЫреЗрдж рдХреЗ рдЙрджреНрднрд╡ рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмреБрд░рд╛ рд╣реИред рд╣реЛ рд╕рдХреЗ рддреЛ рдЗрд╕рд╕реЗ рдмрдЪреЗрдВред

3. рдЫреЛрдЯреЗ рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ


рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдЖрдк рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдФрд░ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рдореНрди рдХреЛрдб рдХреА рд╕рд╣реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ:

if(someVariableExists)  
   x = false


?

if(someVariableExists)  
   x = false  
   anotherFunctionCall();  


-

if(someVariableExists) {  
   x = false;  
   anotherFunctionCall();  
}  


. :

if(someVariableExists) {  
   x = false;  
}  
anotherFunctionCall();  


. , , . , . ( . . .)

if(2 + 2 === 4) return 'nicely done';  


4. JS Lint


JSLint ( debugger, тАФ . .), . .
JSLint JavaScript . , . , . JSLint - . . .тАЭ
тАУ JSLint Documentation

, JSLint , .

IDE JetBrains WebStorm/PyCharm/PHPStorm JSLint.
image
. . .


5.


тАФ . . .
JS тАФ , body.
<p>And now you know my favorite kinds of corn. </p>  
<script type="text/javascript" src="path/to/file.js"></script>  
<script type="text/javascript" src="path/to/anotherFile.js"></script>  
</body>  
</html>


6. 'for"


┬лfor┬╗ .

for(var i = 0; i < someArray.length; i++) {  
   var container = document.getElementById('container');  
   container.innerHtml += 'my number: ' + i;  
   console.log(i);  
}  


#container.

var container = document.getElementById('container');  
for(var i = 0, len = someArray.length; i < len;  i++) {  
   container.innerHtml += 'my number: ' + i;  
   console.log(i);  
}  

.

7.


For . .
var arr = ['item 1', 'item 2', 'item 3', ...];  
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';  

, ( ) .

( join()), .
тАФ James Padolsey, james.padolsey.com


8.


┬л , , .┬╗
тАФ Douglas Crockford

var name = 'Jeffrey';  
var lastName = 'Way';  
  
function doSomething() {...}  
  
console.log(name); // Jeffrey -- or window.name  



var DudeNameSpace = {  
   name : 'Jeffrey',  
   lastName : 'Way',  
   doSomething : function() {...}  
}  
console.log(DudeNameSpace.name); // Jeffrey  

, , ┬лDudeNameSpace┬╗.

9.


, . . -? , .
// Cycle through array and echo out each name.   
for(var i = 0, len = array.length; i < len; i++) {  
   console.log(array[i]);  
}  


10. (progressive enchantment)


JavaScript. ┬л JS, ┬╗. .
Javascript? ( the Web Developer Toolbar .) . JS . JavaScript.

┬л ┬╗ Progressive Enhancement - Graceful Degradation. . .

11. ┬лSetInterval┬╗ ┬лSetTimeOut┬╗


:

setInterval(  
"document.getElementById('container').innerHTML += 'My new number: ' + i", 3000  
);  


, ┬лeval┬╗. -. .

setInterval(someFunction, 3000);  


12. with


with . .

with (being.person.man.bodyparts) {  
   arms = true;  
   legs = true;  
}  



being.person.man.bodyparts.arms = true;  
being.person.man.bodyparts.legs= true;  


, . :

var o = being.person.man.bodyparts;  
o.arms = true;  
o.legs = true;  


13. {} New Object()


JavaScript. ┬лnew┬╗,

var o = new Object();  
o.name = 'Jeffrey';  
o.lastName = 'Way';  
o.someFunction = function() {  
   console.log(this.name);  
}  


┬л ┬╗ . , c


var o = {  
   name: 'Jeffrey',  
   lastName = 'Way',  
   someFunction : function() {  
      console.log(this.name);  
   }  
};  


тАФ , {}

var o = {};  


, . .
тАФ dyn-web.com, http://ww.dyn-web.com/tutorials/obj_lit.php


14. [] new Array()


.

var a = new Array();  
a[0] = "Joe";  
a[1] = 'Plumber';  



var a = ['Joe','Plumber'];  

┬л JavaSript тАФ , . : тАФ . тАФ .
Douglas Crockford


15. ? тАЮvarтАЬ


var someItem = 'some string';  
var anotherItem = 'another string';  
var oneMoreItem = 'one more string';  




var someItem = 'some string',  
    anotherItem = 'another string',  
    oneMoreItem = 'one more string';  

. - , .

17. ,


, .

var someItem = 'some string'  
function doSomething() {  
  return 'something'  
}  


.


var someItem = 'some string';  
function doSomething() {  
  return 'something';  
}  


:
armed , .

ECMA (eng):
ECMAScript ( , , -, do-while, continue, break, return, throw) . . , , . , , .


18. тАЮforтАж inтАЬ


. if hasOwnProperty

for(key in object) {  
   if(object.hasOwnProperty(key)) {  
      ...then do something...  
   }  
}  

тАЮJavaScript: The Good PartsтАЬ Douglas Crockford.

Object.prototype.hasOwnProperty . JavaScript Garden

for(prop in object) if (object.hasOwnProperty(prop)) {
    //...
}

.
. .


19.


? .

function TimeTracker(){  
 console.time("MyTimer");  
 for(x=5000; x > 0; x--){}  
 console.timeEnd("MyTimer");  
}


20. , , ...


( ), - . . JavaScript-.

Object-Oriented JavaScript
JavaScript: The Good Parts
Learning jQuery 1.3
Learning JavaScript

. !

21. Self-Executing Functions


- . .

(function doSomething() {
return {
name: 'jeff',
lastName: 'way'
};
})();

Immediately-Invoked Function Expression. . JavaScript Garden. . .

22. JavaScript


тАФ ?
тАФ , !
тАФ !
тАФ , !
тАФ Sponge Bob Square Pants

. . .

JavaScript-, jQuery Mootools тАФ AJAX. JavaScript ( )
jQuery тАЮeachтАЬ , тАЮforтАЬ .

23. JSON.Parse


JavaScript 2 JSON, ( 2009), . Douglas Crockford, JSON, , . .
JSON, .

var response = JSON.parse(xhr.responseText);  
  
var container = document.getElementById('container');  
for(var i = 0, len = response.length; i < len; i++) {  
  container.innerHTML += '<li>' + response[i].name + ' : ' + response[i].email + '</li>';  
}  


C 4 , IE7 . caniuse.com/#search=JSON.parse
, jQuery json application-type: тАЮapplication/jsonтАЬ тАЮtext/javascriptтАЬ, - $.get, $.post $.ajax. . .


24. тАЮlanguageтАЬ


- language script.

<script type="text/javascript" language="javascript">  
...  
</script>  

. .

:
JavaScript- :
Javascript Garden тАФ english,
javascript.ru тАФ http://learn.javascript.ru/

, . . .

Source: https://habr.com/ru/post/In175283/


All Articles