შესვლა

პროგრამირების საფუძვლები › დამწყები › ფუნქციები

დაბრუნებული მნიშვნელობა

მარტივი⏱ 7 წთ+20 XP👑 Pro#ფუნქციები#return#undefined

რას ისწავლი

  • როგორ დააბრუნოს ფუნქციამ შედეგი return-ით
  • რატომ არ არის console.log და return ერთი და იგივე
  • რას აბრუნებს ფუნქცია return-ის გარეშე

ფუნქცია, რომელიც პასუხს გაძლევს

აქამდე ჩვენი ფუნქციები ბეჭდავდა. ხშირად კი ფუნქციისგან პასუხი გვჭირდება, რომ მერე გამოვიყენოთ: შევინახოთ, შევადაროთ, სხვა გამოთვლაში ჩავსვათ. ამისთვის არსებობს return, „დააბრუნე“:

JavaScript
function square(n) {
  return n * n;
}

let a = square(4);
console.log(a);              // 16
console.log(square(3) + 1);  // 10

return n * n; ამბობს: „გამოთვალე n * n და ეს მნიშვნელობა დაუბრუნე იმას, ვინც გამომიძახა“. ამიტომ გამოძახება square(4) თვითონ ხდება მნიშვნელობა, 16. ფუნქციის გამოძახება, რომელიც რამეს აბრუნებს, გამოსახულებაა: შეგიძლია ცვლადში შეინახო, მასზე მიუმატო, სხვა ფუნქციას გადასცე.

დაბეჭდვა თუ დაბრუნება

ეს ორი სიტყვა ერთნაირად გამოიყურება, მაგრამ სულ სხვადასხვაა:

JavaScript
function squarePrint(n) {
  console.log(n * n);
}

function squareReturn(n) {
  return n * n;
}

let x = squarePrint(5);    // ეკრანზე იბეჭდება 25
let y = squareReturn(5);   // ეკრანზე არაფერი, y-ში 25

console.log(x);   // undefined
console.log(y);   // 25

console.log შედეგს ადამიანს აჩვენებს ეკრანზე, მაგრამ პროგრამას არაფერს აძლევს. return შედეგს პროგრამას აძლევს, მაგრამ ეკრანზე არაფერს წერს. თუ შედეგის შემდგომ გამოყენებას აპირებ, return გჭირდება.

წესი, რომელსაც პროფესიონალებიც მიჰყვებიან: ფუნქციამ, რომელიც რამეს ითვლის, შედეგი დააბრუნოს. დაბეჭდოს იმ კოდმა, რომელმაც ის გამოიძახა.

რატომ? წარმოიდგინე კალკულატორი, რომელიც პასუხს მხოლოდ ხმამაღლა ამბობს, ეკრანზე კი არაფერს აჩვენებს. შემდეგ მოქმედებაში ამ პასუხს ვეღარ გამოიყენებ, ხელახლა უნდა აკრიფო. დაბრუნებული მნიშვნელობა კი ეკრანზე დარჩენილ რიცხვს ჰგავს: შეგიძლია მასზე მიუმატო, გაამრავლო ან სხვა ფუნქციას გადასცე. ასე პატარა ფუნქციები ერთმანეთს ეხმარება.

return ასრულებს ფუნქციას

return-ზე ფუნქცია მაშინვე მთავრდება. მის შემდეგ დაწერილი კოდი აღარ სრულდება. ეს მოსახერხებელია, როცა პასუხი ადრე იცი:

JavaScript
function isEven(n) {
  return n % 2 === 0;
}

function sign(n) {
  if (n > 0) {
    return "დადებითი";
  }
  if (n < 0) {
    return "უარყოფითი";
  }
  return "ნული";
}

console.log(isEven(10));   // true
console.log(sign(-4));     // უარყოფითი

sign-ში else არ გვჭირდება: თუ პირველი პირობა გამართლდა, return ფუნქციას ასრულებს და დანარჩენი ხაზები აღარ მოწმდება.

ფუნქცია return-ის გარეშე

თუ ფუნქციას return არ აქვს, ის მაინც აბრუნებს მნიშვნელობას, undefined-ს. ამიტომ დაიბეჭდა ზემოთ x-ის ნაცვლად undefined. თუ ეკრანზე მოულოდნელად undefined ჩნდება, შეამოწმე, ხომ არ დაგავიწყდა return.

სცადე თავად

გაუშვი, მერე დაამატე ფუნქცია cube(n), რომელიც რიცხვის კუბს აბრუნებს, და დაბეჭდე cube(3).

JavaScript · სცადე თავად

ხშირი შეცდომები

  • console.log return-ის ნაცვლად. ფუნქცია ეკრანზე სწორ პასუხს წერს, მაგრამ let r = f(2);-ში r არის undefined. დაბრუნება return-ით.
  • კოდი return-ის შემდეგ. return x; console.log("მორჩა"); მეორე ხაზი არასოდეს შესრულდება.
  • დაბრუნებული მნიშვნელობის დაკარგვა. ხაზი square(5); ითვლის 25-ს, მაგრამ არსად ინახავს. შედეგი ცვლადში ჩაწერე ან პირდაპირ გამოიყენე.

სავარჯიშო

დაწერე ფუნქცია toFahrenheit(celsius), რომელიც ცელსიუსს ფარენჰაიტად გადაიყვანს ფორმულით celsius * 9 / 5 + 32 და შედეგს აბრუნებს. დაბეჭდე toFahrenheit(0), toFahrenheit(100) და toFahrenheit(20). უნდა მიიღო 32, 212 და 68.

JavaScript · სცადე თავად
💡 მინიშნება

ფუნქციის შიგნით ერთი ხაზი: return celsius * 9 / 5 + 32;. ბეჭდვა ფუნქციის გარეთ: console.log(toFahrenheit(0));.

✅ ამოხსნის ნახვა
JavaScript
function toFahrenheit(celsius) {
  return celsius * 9 / 5 + 32;
}

console.log(toFahrenheit(0));
console.log(toFahrenheit(100));
console.log(toFahrenheit(20));

მინი-ქვიზი

1რას დაბეჭდავს? function double(n) { return n * 2; } console.log(double(4) + 1);

2რა ინახება r-ში? function f() { console.log(7); } let r = f();

3რას დაბეჭდავს test()? function test() { return "ა"; console.log("ბ"); } და console.log(test());

შეჯამება

  • return შედეგს აბრუნებს გამოძახების ადგილას. გამოძახება ხდება მნიშვნელობა.
  • console.log ადამიანს აჩვენებს, return პროგრამას აძლევს.
  • return-ზე ფუნქცია მაშინვე მთავრდება.
  • ფუნქცია return-ის გარეშე undefined-ს აბრუნებს.
📝 ჩემი შენიშვნა