
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рднрд╛рд╖рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдФрд░ рд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдЧреИрд░-рдорд╛рдирдХ рдЪрдХреНрд░ рдмрди рдЬрд╛рдирд╛ рдПрдХ рдмрдбрд╝реА рдЪреБрдиреМрддреА рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдирд┐рдХрдЯ рд╕рдВрдмрдВрдзреА рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдЫреЛрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рд╕рднреА рдХреЛрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рддреБрд▓рдирд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИрдВред
рд╢рд┐рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП
рдЪрд▓реЛ рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
for (var i = 0; i < 10; i++) { //... }
рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛:
for i in [0...10]
рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 0 ... 10 рдХрд╛ рдЕрд░реНрде рд╣реИ: рд▓реВрдк рдХреЗ 10 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рдиред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ I <= 10 ?
for i in [0..10]
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реАрдорд╛ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
for (var i = 0; i <= 10; i++) { //... }
рдпрджрд┐ рд░реЗрдВрдЬ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдЕрдВрддрд┐рдо [10..0] рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЙрд▓реНрдЯреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЙрд▓реНрдЯрд╛ рдЪрдХреНрд░ рдорд┐рд▓реЗрдЧрд╛:
for (var i = 10; i >= 0; i--) { //.. }
рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдирдХрд╛рд░рд╛рддреНрдордХ рд╢реНрд░реЗрдгреА рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ:
for i in [-10..0]
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдк рд╕рд░рдгреА рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рдиреЛрдВ рд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[0..-3]
рдЕрдм рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдПрди рдХреЗ рднрд╛рдЬреНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
var factorial = function(n) { var result = 1; for (i = 1; i <= n; i++) { result *= i; } return result; }; factorial(5) //120
CoffeeScript:
factorial = (n) -> result = 1 for i in [1..n] result *= i result factorial 5
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рдкрдардиреАрдп рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
factorial = (n) -> result = 1 result *= i for i in [1..n] result
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдпрд╣ рддрдереНрдпрд╛рддреНрдордХ рдЧрдгрдирд╛ рдХрд╛ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
[...]
рдореИрдВ рдЦреБрдж рдХреЛ рд╡рд┐рд╖рдп рд╕реЗ рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЖрд╡реЗрджрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реВрдВ [...] (рд╕реНрд▓рд╛рдЗрд╕) ред
рдХрднреА-рдХрднреА рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рд╕реЗ рдЖрдк рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдЬреИрд╕рд╛ рдХреБрдЫ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
'a,b,c'[''...][0]
рдЬреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛:
'a,b,c'.slice('')[0]; //a
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╕реНрд▓рд╛рдЗрд╕ рд╕реЗ рдЕрд▓рдЧ рд░реЗрдВрдЬ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рджреЛ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╣реИрдВ:
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдПрдХ рдЪрд░рдо рдореВрд▓реНрдп рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
[1...]
рдпрд╣рд╛рдБ рдореИрдВ рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЬреЛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдЙрд╕ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
var __slice = Array.prototype.slice; __slice.call(1);
рдпрд╣ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
fn = -> [arguments...] fn [1..3]
рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐
CoffeeScript рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╡рд┐рдХрд▓реНрдк (
рдлреНрд▓реИрдЯреНрд╕ ) рд╣реИ:
fn = (args...) -> args fn [1..3]
рдЕрдВрдХрдЧрдгрд┐рдд рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ:
[1 + 1...]
рджреВрд╕рд░реЗ, рд╕реНрд▓рд╛рдЗрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ
[1..10][...2]
рддреАрд╕рд░рд╛, рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдЧрдгрдирд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ
[1,2,3...]
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рд░рд▓ рд╕рдВрдЧрддрд┐ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ:
[1, 2].concat(Array.prototype.slice.call(3));
рдПрдХ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдЙрджрд╛рд╣рд░рдг:
list1 = [1,2,3] list2 = [4,5,6] [list1, list2 ...]
рд╕реВрдЪреА рдХреА рд╕рдордЭ
CoffeeScript рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕реВрдЪреА рд╕рдордЭ рд╣реИ ред
1 рд╕реЗ n рддрдХ рд╕рднреА рддрдереНрдпрд╛рддреНрдордХ рдЧрдгрдирд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
factorial = (n) -> result = 1 result *= i for i in [1..n] factorial 5
рдЕрдм рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдерд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкрд╣рд▓реЗ рдкрд╛рдВрдЪ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ:
(i for i of location)[0...5]
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдпрд╣ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
var list = function() { var result = []; for (var i in location) { result.push(i); } return result; }().slice(0, 5);
рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА (рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд╣реАрдВ) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
foo = (value for i, value of ['a', 'b', 'c'][0...2])
рдПрдХ рддрд░рдл, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдПрдХ рдмрд╣реБрдд рд╣реА рдХреБрд╢рд▓ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рддрд░реАрдХрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рдмрд╛рдж рдХреМрди рд╕рд╛ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб, рдЬреЛ 0 рд╕реЗ 2 рддрдХ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
foo = (value for value in ['a', 'b', 'c'][0...2])
рдпрд╛ рддреЛ:
['a', 'b', 'c'].filter (value, i) -> i < 2
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдХреГрдкрдпрд╛ рдкрджреНрдзрддрд┐ рдХреЗ рдирд╛рдо рдФрд░ рд╢реБрд░реБрдЖрддреА рдмреНрд░реИрдХреЗрдЯ рдХреЗ рдмреАрдЪ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдВред рдпрд╣ рдЕрдВрддрд░рд╛рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реИ!
рдпрджрд┐ рдЖрдк рд╕реНрдерд╛рди рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:
['a', 'b', 'c'].filter(value, i)(function() { return i < 2; });
рдЕрдм, рдЖрдк рд╢рд╛рдпрдж рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ рдХрд┐ .filter () рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рдкрд╕рдВрджреАрджрд╛ рдХреНрдпреЛрдВ рдирд┐рдХрд▓рд╛?
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдлреЙрд░- рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреБрд╡рд╛рджрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд▓реВрдк рдХреЗ рдзреАрдореЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
рдкреНрд░рд╕рд╛рд░рдг рдкрд░рд┐рдгрд╛рдо:
var i, value; [ (function() { var _ref, _results; _ref = ['a', 'b', 'c'].slice(0, 2); _results = []; for (i in _ref) { value = _ref[i]; _results.push(value); } return _results; })() ];
рдЖрдЗрдП рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдб рднрдпрд╛рдирдХ рд╣реИред
рдЕрдм рдлрд┐рд▓реНрдЯрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ:
['a', 'b', 'c'].filter(function(value, i) { return i < 2; });
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдПрдХ рдЖрджрд░реНрд╢ рдФрд░ рдХреБрд╢рд▓ рдХреЛрдб рдорд┐рд▓рд╛ рд╣реИ!
рдпрджрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рдкрд░ CoffeeScript рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ IE9- рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рд╣реА рдЗрд╕рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП!
рдлрд┐рд░ рдСрдкрд░реЗрдЯрд░
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд░реНрд╕рд░ рдЗрдВрдбреЗрдВрдЯ, рд▓рд╛рдЗрди рдмреНрд░реЗрдХ, рдХреИрд░рд┐рдЬ рд░рд┐рдЯрд░реНрди рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 1 рд╕реЗ n рдХреЛ рджреЛ рдХреА рд╢рдХреНрддрд┐ рддрдХ рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрдХреНрд░ рд╣реИ:
for i in [1...10] i * i
рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд▓рд╛рдЗрди рдлреАрдб рдФрд░ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ:
for i in [1...10] then i * i
рдХреБрдЫ рд╕рдордп рдореЗрдВ , рдЕрдЧрд░ / рдФрд░ , рдФрд░ рдЬрдм / рдЬрдм рдмрдпрд╛рди, рддрдм рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдкрд╛рд░реНрд╕рд░ рдХреЛ рднрд╛рд╡реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред
рд╕рдВрдЪрд╛рд▓рдХ рджреНрд╡рд╛рд░рд╛
рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ, рд╣рдордиреЗ рдХреЗрд╡рд▓ " рд╕рд░рд▓ " рдЪрдХреНрд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдм рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЪрд░рдг рдореЗрдВ рд▓рд╛рдкрддрд╛ рдореВрд▓реНрдпреЛрдВ рд╡рд╛рд▓реЗ рдЪрдХреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рд╣рдо рдХреЗрд╡рд▓ 2 рд╕реЗ 10 рддрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдВрдЧреЗ:
alert i for i in [0..10] by 2
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдпрд╣ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
for (var i = 2; i <= 10; i += 2) { alert(i); }
рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЙрди рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЪрд░рдг рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рди рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[i for i in 'Hello World' by 3]
рддрдм рдФрд░ рдлрд┐рд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
[for i in 'hello world' by 1 then i.toUpperCase()]
рдпрджреНрдпрдкрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдереЛрдбрд╝рд╛ рджреВрд░ рдХреА рдмрд╛рдд рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ " рдПрдХ рдореЗрдВ " рдХрджрдо рдХреЛ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рднреА, рддрддреНрдХрд╛рд▓реАрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рдВрдпреБрдХреНрдд рдХрд╛рдо рд╕реЗ рд╣рдореЗрдВ рдмрд╣реБрдд рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рдХреБрд╢рд▓ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рдЦреБрдж рдХрд╛ рд╕рдВрдЪрд╛рд▓рдХ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдХреНрд╕рд░
.hasOwnProperty () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:
var object = { foo: 1 }; object.constructor.prototype.bar = 1; console.log('bar' in object);
рдлреЙрд░-рдЗрди рд▓реВрдк рдХреЗ рд╢рд░реАрд░ рдореЗрдВ
.hasOwnProperty () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
var object = { foo: 1 }; object.constructor.prototype.toString = function() { return this.foo; }; for (i in object) { if (object.hasOwnProperty(i)) { console.log(i);
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдордиреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ
.toString () рдкрджреНрдзрддрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдпрд╣ рд▓реВрдк рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрджреНрдпрдкрд┐ рдЗрд╕реЗ рд╕реАрдзреЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
object.toString()
CoffeeScript рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП
рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдкрд░реЗрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
object = foo: 1 object.constructor::toString = -> @foo for own i of object console.log i
рдпрджрд┐ рдЖрдкрдХреЛ рдХрдерди рдХреА рджреВрд╕рд░реА рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ
рд╕реНрд╡рдпрдВ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
for own key, value of object console.log '#{key}, #{value}'
рд╕рд╢рд░реНрдд рдпрджрд┐ / рдЕрдиреНрдпрдерд╛ рдХрдерди
рдЕрдм рдореИрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреЛ рдХрд┐ / рдЕрдиреНрдп рдХрдердиреЛрдВ рдХреЗ рд╕рд╛рде рд▓реВрдк рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИред
рдХрднреА-рдХрднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╣рдо рд╕рдорд╛рди рдХреЛрдб рдореЗрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВ:
for (var i = 0; i < 10; i++) if (i === 1) break;
рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рдВрджрд╛ рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдмреНрдпрд╛рдЬ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ CoffeeScript рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦрдирд╛ рд╣реИред
рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдорди рдореЗрдВ рдЖрддрд╛ рд╣реИ:
for i in [0..10] if i is 1 break
рдареАрдХ рд╣реИ ..., рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЯрд░реНрдорд┐рдирд▓ рдорд╛рди рдХрд╛ рд╡рд┐рд╡рд░рдг рдпрджрд┐ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛!
рдкрд┐рдЫрд▓реА рд╕рд╛рдордЧреНрд░реА рд╕реЗ, рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдо рддрддреНрдХрд╛рд▓реАрди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
for i in [0..10] then if i is 1 break
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рд╕реЗ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА, рд╣рдо рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рджреЗрдЦрддреЗ рд╣реИрдВред
рдЖрдЗрдП рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ ...
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдХрдерди рдЕрдиреНрдп рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рдорд╛рди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рддрддреНрдХрд╛рд▓реАрди рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рдж рддрддреНрдХрд╛рд▓реАрди рдСрдкрд░реЗрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ :
for i in [0..10] then if i is 1 then break
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ:
for (i = 0; i <= 10; i++) { if (i === 1) { break; } }
рдХрднреА-рдХрднреА рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрдм рдЪрдХреНрд░ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕реАред рдПрд▓ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реНрдерд┐рддрд┐:
if (foo === true) { for (i = 0; i <= 10; i++) { if (i === 1) { break; } } }
рдЧреИрд░ - рдирд┐рдпрддрд╛рддреНрдордХ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
(if i is 1 then break) for i in [0..10] if foo is on
рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдордиреЗ рддрддреНрдХрд╛рд▓реАрди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЬрдмрдХрд┐ рдХреЛрдИ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реБрдИрдВ!
рдЬрдм рдЦрдВрдб
рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдФрд░ рдлрд┐рд░ рдмрдпрд╛рдиреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдпрд╣ рд╣рдорд╛рд░реА рд╕реВрдЪреА рдореЗрдВ рдЕрдЧрд▓реЗ рдмрдпрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЬрдм рдмрдпрд╛рдиред
рдФрд░ рдЪрд▓реЛ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
if foo is on then for i in [0..10] when i is 1 then break
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдб рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдирд┐рдХрд▓рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдиреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдЕрд░реНрде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред
рдЖрдЗрдП рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдЖрдк рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдХреНрд░рдо рдХреЛ 1 рд╕реЗ 10 рддрдХ рдХреИрд╕реЗ рдШрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ n:
alert i for i in [1..10] when i % 2 is 0
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
for (i = 1; i <= 10; i++) { if (i % 2 === 0) { alert(i); } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдСрдкрд░реЗрдЯрд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рджреЗрддрд╛ рд╣реИред
рд╢рд┐рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП
рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдСрдлрд╝ рдлреЙрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗ рд╣реИрдВред рдЕрдм рдЖрдЗрдП рдлреЙрд░- рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЬреЛ рдлреЙрд░-рдЗрди рдХреЗ рд╕рд╛рде - рд╕рд╛рде рдЖрдкрдХреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЖрдЗрдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдлрд╝реЛрд░ -рдЗрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рддреБрд▓рдирд╛рддреНрдордХ рд╕рд╛рджреГрд╢реНрдп рдмрдирд╛рдПрдВред
var object = { foo: 0, bar: 1 }; for (var i in object) { alert(key + " : " + object[i]); //0 : foo, 1 : bar }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рдСрдмреНрдЬреЗрдХреНрдЯ [i] ред
CoffeeScript рдореЗрдВ , рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
value for key, value of {foo: 1, bar: 2}
рджреВрд╕рд░реЗ, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд░рд┐рдЪрд┐рдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╕рдВрдХреЗрддрди рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
for key, value of {foo: 1, bar: 2} if key is 'foo' and value is 1 then break
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
var object = { foo: 1, bar: 2 }; for (key in object) { if (key === 'foo' && object[i] === 1) { break; } }
рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:
(if value is 1 then alert "#{key} : #{value}") for key, value of document
рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╕реНрддреБ рдЧреБрдгреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА () рд╡рд┐рдзрд┐ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИ:
Object.keys obj {foo: 1, bar: 2}
рд╕рдВрдкрддреНрддрд┐ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
object = foo: 1 bar: 2 Object.keys(object).map (key) -> object[key];
рдЬрдмрдХрд┐ рдмрдпрд╛рди
рдмрдпрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП / рдХреА / рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдЬрдм рд╣рдордиреЗ рдлреЙрд░-рдЗрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рджреЗрдЦрд╛, рддреЛ рдореИрдВрдиреЗ n рдХреЗ рддрдереНрдпрд╛рддреНрдордХ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛, рд╕рдордп рд╕рд╣реА рд╣реИ:
factorial = (n) -> result = 1 while n then result *= n-- result
рдСрдлрд╣реИрдВрдб рдореИрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдмрд╕реЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдлреИрдХреНрдЯрд░рд┐рдпрд▓ рд╕реЙрд▓реНрдпреВрд╢рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
factorial = (n) -> !n and 1 or n * factorial n - 1
рд▓реВрдк рдирд┐рд░реНрджреЗрд╢
рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдмрдирд╛рдирд╛ рд╣реИ:
loop then break if foo is bar
рдкреНрд░рд╕рд╛рд░рдг рдкреНрд░рд╕рд╛рд░рдг:
while (true) { if (foo === bar) { break; } }
рдирд┐рд░реНрджреЗрд╢ рддрдХ
рдЬрдм рддрдХ рдХрдерди рдПрдХ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реИ, рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдирдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрдЧрд▓реЗ рд╡рд░реНрдг рд╕реЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП:
expr = /foo/g; alert "#{array[0]} : #{expr.lastIndex}" until (array = expr.exec('foofoo')) is null
рдкреНрд░рд╕рд╛рд░рдг рдкреНрд░рд╕рд╛рд░рдг:
var array, expr; expr = /foo*/g; while ((array = expr.exec('foofoo')) !== null) { alert("" + array[0] + " : " + expr.lastIndex); } //foo : 3, foo : 6
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реВрдк рдХреЛ рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╢реВрдиреНрдп рди рд╣реЛ рдЬрд╛рдПред
рдХрд░рддреЗ-рдХрд░рддреЗ рдмрдпрд╛рди
рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбреВ- рдСрдлрд╝ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд░рд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд▓реВрдк рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЖрдВрд╢рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ:
loop
рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпрд╛рдБ (рдлрд╝рд┐рд▓реНрдЯрд░, forEach, рдореИрдк рдЗрддреНрдпрд╛рджрд┐)
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕рднреА рд╕рдорд╛рди рддрд░реАрдХреЗ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ JavaSctipt рдореЗрдВ рд╣реИ ред
рдЗрд╕ рдкреВрд░реЗ рд╕рдореВрд╣ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ; рд╣рдо рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирдХреНрд╢реЗ () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рддреАрди рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ:
[1..3].map (i) -> i * i
рдкреНрд░рд╕рд╛рд░рдг рдкреНрд░рд╕рд╛рд░рдг:
[1, 2, 3].map(function(i) { return i * i; });
рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
['foo', 'bar'].map (value, i) -> "#{value} : #{i}"
рджреВрд╕рд░рд╛ рддрд░реНрдХ, рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рдзрд┐ рдХреЙрд▓ рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ:
var object = new function() { return [0].map(function() { return this }); }; // [Window map]
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╡рд┐рдВрдбреЛ рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЕрдВрджрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЙрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
var object = new function() { return [0].map(function() { return this; }, this); }; // [Object {}]
CoffeeScript рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ = = рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
object = new -> [0].map (i) => @
рдкреНрд░рд╕рд╛рд░рдг рдкреНрд░рд╕рд╛рд░рдг:
var object = new function() { var _this = this; return [0].map(function() { return _this; }, this); };
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рд╕реАрдорд╛ рддрдХ рдЗрди рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ github'e рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ
рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореИрдк рдФрд░ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг github'e рдкрд░ рдореЗрд░реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднреА рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдирд┐рд░реНрджреЗрд╢ / рд╢реЙрд░реНрдЯ рд╕рд░реНрдХрд┐рдЯ рдХрд░реЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХреНрд▓реЛрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрдВ рдЗрд╕ рдЖрдирдВрдж рд╕реЗ рд╡рдВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЕрдирд╛рдо, рд╕реНрд╡-рдмрд╛рдзреНрдпрдХрд╛рд░реА рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
array = []; i = 2 while i-- then array[i] = do (i) -> -> i array[0]()
рдЗрд╕ рдХреЛрдб рдХрд╛ рд╕рд╛рд░ рд╕рд░рдгреА рдХреЛ рднрд░рдирд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рддрддреНрд╡ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
var array = [], i = 2; while (i--) { array[i] = function(i) { return function() { return i; }; }(i); } array[0]() //0 array[1]() //1
рдиреЗрд╕реНрдЯреЗрдб рдирд┐рд░реНрджреЗрд╢
рдиреЗрд╕реНрдЯреЗрдб рдирд┐рд░реНрджреЗрд╢ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╕рдорд╛рди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1 рд╕реЗ 3 рддрдХ рдпреБрдЧреНрдорд┐рдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рднрд░реЗрдВ:
list = [] for i in [0..2] for j in [1..2] list.push i list
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ!
рд╢рд╛рдпрдж рдЖрдк рдЗрд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЦреИрд░, рдЕрдм рдкреНрд░рд╡реЗрд╢ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
list = [] for i in [0..2] then for j in [1..2] then list.push i
PS: рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рднреА рдЕрдиреБрдордд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдкрдХреЛ рджреВрд╕рд░реЗ рдЪрдХреНрд░ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рддреАрди рдЬреЛрдбрд╝реЗ рддрддреНрд╡реЛрдВ рдХреЛ 0-3 рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
list = [] for i in [0..2] list.push i for j in [1..1] list.push i list
рдпрд╣ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░реЗ рдЪрдХреНрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдкрд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЪрдХреНрд░ рдХреЗ рд╢рд░реАрд░ рдХреЛ рд▓рдШреБ рд╕рдВрдХреЗрддрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
list = [] for i in [0..2] list.push i list.push i for j in [1..1] list
рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рдЖрдк рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рдЙрдкрд╕рд░реНрдЧ рдФрд░ рдЙрдкрд╕рд░реНрдЧ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
jQuery рдЖрджрд┐ред
рдореБрдЭреЗ рдЕрднреА рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реИ, CoffeeScript рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЖрдЗрдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг
jQuery рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
()ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ():
$ -> @
рдкреНрд░рд╕рд╛рд░рдг рдкрд░рд┐рдгрд╛рдо:
$(function() { return this; });
рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИ рдЬреЛ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╣рдВрд╕реА рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ
рд╣рдорд╛рд░реА рд╕реВрдЪреА рдореЗрдВ рдЕрдЧрд▓рд╛
jQuery рд╡рд┐рдзрд┐
.each () рд╣реИ , рдЬреЛ рдорд╛рдирдХ
.forEach () рд╡рд┐рдзрд┐ рдХреЗ рд▓рдЧрднрдЧ рдмрд░рд╛рдмрд░ рд╣реИ
$ .each:
$.each [1..3], (i) -> i
рдкреНрд░рд╕рд╛рд░рдг рдкрд░рд┐рдгрд╛рдо:
$.each([1, 2, 3], function(i) { return i; });
ECMASctipt 6
рдпрджрд┐ рдЖрдк ECMASctipt 6 рдорд╛рдирдХ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ
ECMASctipt 6 рдорд╛рдирдХ рдореЗрдВ рдЬрдирд░реЗрдЯрд░,
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдФрд░ рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдЕрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреНрд░рд╛рдлреНрдЯ рдорд╛рдирдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдХреНрдпреЛрдВ рд╣реВрдБ?
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рдИрдПрд╕ 6 рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдЖрдЬ рдХреЗ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдЧрдд рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджреЗрд╢ рдХреЗ
... рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ:
[value for key, value of [1,2,3]]
рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдореЗрдВ рдирд┐рдореНрди
рд╡рд┐рдХреГрддрд┐ рдорд┐рд▓рддреА рд╣реИ:
var key, value; [ (function() { var _ref, _results; _ref = [1, 2, 3]; _results = []; for (key in _ref) { value = _ref[key]; _results.push(value); } return _results; })() ]; //[1, 2, 3]
рднрд╡рд┐рд╖реНрдп рдХрд╛ рдорд╛рдирдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
[for i of [1,2,3]]
рдорд╣рд╛рди, рд╣реИ рдирд╛?
рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЬрдирд░реЗрдЯрд░ рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ:
[i * 2 for each (i in [1, 2, 3])];
рдЗрд╕ рддрд░рд╣ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рднреА рдмрди рд╕рдХреЗрдЧрд╛:
[i * 2 for each (i in [1, 2, 3]) if (i
Iterators рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛:
var object = { a: 1, b: 2 }; var it = Iterator(lang); var pair = it.next();
Iterators рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
var it = Iterator([1,2,3]); [i * 2 for (i in it)];
рдирдП рдорд╛рдирдХ рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде,
рдХреЙрдлрд╝рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрдИ рдЪрд┐рдкреНрд╕
рдРрд╕реЗ рд╣реА рдЦрддреНрдо рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдХрд░реНрдиреЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЪреАрдиреА рдкрджреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рджреЗрддреЗ рд╣реИрдВред