рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ : рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рд░реАрдХрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд░реВрдЪрд┐ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬреЛ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рджреВрд░ рд╣реИрдВ
рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рддрд░рд╣, рдореИрдВ
CoffeeScript рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВред рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕рдВрд╢реНрд▓рд┐рд╖реНрдЯ рдЪреАрдиреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдХрд▓рди рдХрджрдо рдХреЛ рдХреИрд╕реЗ рд╕рд╣реА рдард╣рд░рд╛ рд╕рдХрддрд╛ рд╣реИ?
рд▓реЗрдХрд┐рди, рдореИрдВрдиреЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рд╛, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдХрднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ред рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд╢реБрдЧрд░ рдЕрднреА рд╢реБрд░реБрдЖрдд рд╣реИред рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдХрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд
рдХреНрд▓реАрдирд░ рдмрди рдЧрдпрд╛ред CoffeeScript рдЖрдкрдХреЛ рдПрдХ рдЕрдЪреНрдЫреА рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ рдФрд░ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
1. рдЪрд░ рдШреЛрд╖рдгрд╛
рдХрдИ рд╢реБрд░реБрдЖрддреА рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐
var x рдХрд╛ рдЕрд░реНрде рд╣реИ: "рдореИрдВрдиреЗ X рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ред" рджрд░рдЕрд╕рд▓,
var рдХреЗрд╡рд▓ X рдХреЛ рд╡рд░реНрддрдорд╛рди рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд╣рд░ рдШреВрдордиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
x = 'Hello from the JavaScript Nation!';
рдФрд░ рдЖрдк
var рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рддреЛ
X рдЕрдкрдиреЗ рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдХрд░реЗрдВ, рдФрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реБрдП, рджреВрд╕рд░реЗ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░реЗрдЧрд╛ред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдиреБрднрд╡реА рдкреЗрд╢реЗрд╡рд░реЛрдВ рдЕрдХреНрд╕рд░ рдПрдХ рд╕рдорд╛рди рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
var a = 1, b = 2 рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рднреАрддрд░ рдПрдХ рдирдпрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐
var a = 1; b = 2 рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░
b рдХреЛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ : рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдВрджреЗрд╣ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ "," рдФрд░ ";" рдореИрдВ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
var a = b = 3рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрде
CoffeeScript рдХреЗ рд╕рд╛рде, рд╕рднреА рдЪрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
x = 'Welcome to CoffeeScriptville!'
рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, CoffeeScript рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж,
X рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рддрдХ рд╕реАрдорд┐рдд рд╣реИред
2. рдпрд╣ рдПрдХ рдФрд░
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рднреНрд░рдо рдХреЗ рд╕рдмрд╕реЗ рдЖрдо рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ
рдпрд╣ рдХреАрд╡рд░реНрдб рд╣реИ ред рдЖрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЙрд▓ рдХрд░реЗрдВ:
tinman.prototype.loadBrain = function() { this.brain = 'loading...'; $.get('ajax/brain', function(data) { this.brain = data; }); };
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐, рдбреЗрдЯрд╛ рдХреЙрд▓ рдХреЗ рдЕрдВрджрд░,
рдпрд╣ рдЙрд╕реА рд╡рд╕реНрддреБ рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛, рдкрд░реЗред
рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрде
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рдХреАрд╡рд░реНрдб рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЪрд░ рд╕реЗ рджреГрд╢реНрдп рдЕрдВрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо @ рд╣реИред
рджреВрд╕рд░реЗ, рдХрд┐рд╕реА рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП @ рдЪрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддреАрдХ рдХреЗ рд╡рд┐рдкрд░реАрдд => (рдмреЛрд▓реНрдб рдПрд░реЛ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, - рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛:
tinman::loadBrain = -> @brain = 'loading...' $.get 'ajax/brain', (data) => @brain = data
3. рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрдореА
рдЯрд░реНрдиреЗрд░реА рдСрдкрд░реЗрдЯрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди рд▓реЗрддрд╛ рд╣реИ: рдЕрдиреНрдп рд╕рд╢рд░реНрдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд (
рдпрджрд┐ ,
рд╕реНрд╡рд┐рдЪ ), рддреЛ рдпрд╣ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЯрд░реНрдиреЗрд░реА рдСрдкрд░реЗрдЯрд░ рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
closestEdge = x > width / 2 ? 'right' : x < width / 2 ? 'left' : 'center';
рдпрд╛ рддрд╛рд░реНрдХрд┐рдХ рд╢реНрд░реГрдВрдЦрд▓рд╛:
if (x > width / 2) { closestEdge = 'right'; } else if (x < width / 2) { closestEdge = 'left'; } else { closestEdge = 'center'; }
рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрде
CoffeeScript рдХреА рд╕рднреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рд╡реНрдпрд░реНрде рджреЛрд╣рд░рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗрддрд╛ рд╣реИ:
closestEdge = if x > width / 2 'right' else if x < width / 2 'left' else 'center'
4. рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛
рд▓реЛрдХрдкреНрд░рд┐рдп рдкрд░реАрдХреНрд╖рдг "рдХреНрдпрд╛ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡реЗрд▓ рдЬрд╛рдирддреЗ рд╣реИрдВ" рдореЗрдВ рдпрд╣ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИ:
for (var i = 1; i <= 3; i++) { setTimeout(function() { console.log(i); }, 0); }
рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛:
4
4
4
рдХреНрдпреЛрдВ? рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдореЗрдВ 0 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд▓реВрдк рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдФрд░ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ 4 рд╡реЗрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред I рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓реНрдп рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
for (var i = 1; i <= 3; i++) { (function(i) { setTimeout(function() { console.log(i); }, 0); })(i); }
рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрде
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд▓реВрдк рдореЗрдВ рдЪрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЫреЛрдЯреА рдХреИрдкреНрдЪрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
for i in [1..3] do (i) -> setTimeout (-> console.log i), 0
рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛:
1
2
3
5. рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐
рдХреЛрдб рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИ:
x = sprite.x; y = sprite.y; css = { opacity: opacity, fontFamily: fontFamily }; function(request) { body = request.body; status = request.status; // ... }
рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрде
рдКрдкрд░ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝рд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:
{x, y} = sprite css = {opacity, fontFamily} ({body, status}) -> ...
рдирд┐рд╖реНрдХрд░реНрд╖
рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдХреЛрдб рд╣реИред рдпрд╣ рдПрдХ рдмрдбрд╝реЗ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рд╕рд╣реА рдХреЛрдб рдмрдирд╛рдПрдВрдЧреЗ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдФрд░ рддреНрд╡рд░рд┐рдд рдПрдХреАрдХрд░рдг рдкрд╕рдВрдж рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореМрдХрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдмрд╛рдж рдореЗрдВ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред
(рдмреЗрд╢рдХ, рдЕрдЧрд░ рдЖрдк рд░реЗрд▓ 3.1 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ
рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк
рдирд╣реАрдВ рд╣реЛрдЧрд╛ )
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ : рдХрд┐рд╕реА рдХреЛ рдЧреБрдорд░рд╛рд╣ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдордЬрд╛рдХ рд╣реИ! рдмреЗрд╢рдХ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдмрд╕ рдЬреЗрдордлрд╛рдЗрд▓ рд╕реЗ рд▓рд╛рдЗрди рд╣рдЯрд╛ рджреЗрдВред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ : рдЖрд░рдЖрдИрдПрд▓
3.1 рдмреАрдЯрд╛ 1 рдХреА рд░рд┐рд╣рд╛рдИ рдкрд░ рд╕рднреА рдЖрд░рдУрдЖрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдмрдзрд╛рдИред рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдкреАрдПрдо рдХреЛ рднреЗрдЬреЗрдВред