Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: b2l в Aug 03, 2012, 10:23



Титла: Локални и глобални променливи - предеклариране
Публикувано от: b2l в Aug 03, 2012, 10:23
Така, задачата е да се постави var където е необходими, за да се изпълни условието, което е зададено като коментар:
Код
GeSHi (Javascript):
  1. a = 3;
  2. b = 2;
  3.  
  4. function line(x) {
  5.    a = 5;
  6.    b = 4;
  7.    return a*x + b
  8. }
  9.  
  10. //b should be 17
  11. b = line(a) - b;
  12. alert(b);
  13.  
  14. //c should be 21
  15. var c;
  16. c = line(a) - b;
  17. alert(c);
  18.  

Аз смятам, че условието е сбъркано, но задачата е взета от сайта: http://www.codecademy.com/courses/javascript-for-jquery/1?curriculum_id=4fc3018f74258b0003001f0f/#!/exercises/3
Някакви идеи?


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: bvbfan в Aug 03, 2012, 13:09
Не знам какво да ти кажа, аз "хакнах" кода  ;D Според мен идеята на тази задача е просто да се прави разлика между глобална и локална променлива.
Код
GeSHi (Javascript):
  1. a = 3;
  2. b = 2;
  3.  
  4. function line(x) {
  5.    var a = 5;
  6.    var b = 4;
  7.    return a*x + b;
  8. }
  9.  
  10. //b should be 17
  11. b = line(a) - b;
  12. alert(b);
  13.  
  14. //c should be 21
  15. a = 0;
  16. c = line(a) + b;
  17. alert(c);

a и b са глобални променливи, но за функцията line a и b са локални, аз друг смисъл не виждам  ???


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: b2l в Aug 03, 2012, 13:56
Да, но така c става 36 или там нещо друго беше, не помня точно.
E, с добавяне на: а = 0 става, ама не е това решението.


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: borovaka в Aug 03, 2012, 14:12
@b2l От къде разбра, че това не е решението? ... никъде не пише, че не можеш да променяш променливи


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: b2l в Aug 03, 2012, 14:17
@borovaka
Цитат
The code to the right behaves unexpectedly because of scope issues. Run it and try to figure out what is going on. Fix it using var


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: borovaka в Aug 03, 2012, 14:20
Еми точно :) Виж какво пише ... точно ти трябва да са локални променливи ако променяш глобална стойност на променлива, която в противен случай, би презаписала стойност на променлива използвана във вътрешността на функцията ... По тази причина използването на локални променливи, решава проблема.


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: b2l в Aug 03, 2012, 15:50
Нулирането на a (a = 0) не е разрешено, поне аз така тълкувам условието на задачата.


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: solarflux в Aug 03, 2012, 20:38
задачата е леко сбъркана, но ето едно решение, което минава...
Код
GeSHi (Javascript):
  1. a = 3;
  2. b = 2;
  3.  
  4. function line(x) {
  5.    var a = 5;
  6.    var b = 4;
  7.    return a*x + b
  8. }
  9.  
  10. //c should be 21
  11. c = line(a) + b;
  12. alert(c);
  13.  
  14. //b should be 17
  15. b = line(a) - b;
  16. alert(b);


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: VladSun в Aug 25, 2012, 00:29
Хм, "CodeAcademy", която те занимава с глобални променливи във function scope не си заслужава името ;)


Титла: Re: Локални и глобални променливи - предеклариране
Публикувано от: b2l в Aug 25, 2012, 12:24
Хм, "CodeAcademy", която те занимава с глобални променливи във function scope не си заслужава името ;)

На мен игричките ми харесват там. Още повече, че можеш да хакваш кода и пак да преминаваш нивата, за да печелиш медали :).