рдПрдХ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдореВрд▓ рджрд┐рдирд╛рдВрдХ рдЬрдирд╡рд░реА 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.

. . .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/, . . .