wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Function, Scope and Closure

Total questions: 67

Worksheet time: 36mins

Name
Class
Date
1.

რომელი ვარიანტია სწორი Function Declaration?

a)

const greet = function() { }

b)

function greet() { }

c)

() => console.log("Hi")

d)

let greet = () => { }

2.

რომელი მახასიათებელია მხოლოდ Function Declaration-ისთვის?

a)

შეგიძლიათ გამოიძახო მის დაწერამდე

b)

არ აქვს სახელი

c)

ინახება ცვლადში

d)

ყოველთვის ანონიმურია

3.

რა გამოიტანს კოდი?

sayHi();

function sayHi() {

console.log("Hello");

}

a)

Error

b)

Hello

c)

Undefined

d)

Nothing

4.

Function Declaration–ის hoisting როგორ მუშაობს?

a)

მხოლოდ ცვლადი იწევა ზემოთ

b)

მთელი ფუნქცია იწევა ზემოთ

c)

სრულად არ ხდება hoisting

d)

მხოლოდ return იწევა

5.

შეგიძლიათ თუ არა ფუნქცია function declaration-ით შექმნა სხვა ფუნქციის შიგნით?

a)

დიახ

b)

არა

6.

რომელი აღწერს სწორად function declaration-ის სქოუპს?

a)

ყოველთვის გლობალურია

b)

დამოკიდებულია სად შეიქმნა

c)

ყოველთვის ბლოკურია

d)

ყოველთვის მოდულარულია

7.

რომელი მაგალითი აჩვენებს ფუნქციის დეკლარაციის გამოყენებას კონტექსტში?

if (true) {

function test() { return 1; }

}

console.log(typeof test);

a)

"function"

b)

"undefined"

c)

"number"

d)

Error

8.

Function Declaration და Function Expression-ის განსხვავება ძირითადად არის…

a)

სინტაქსი

b)

hoisting

c)

scope

d)

ყველა ზემოთ ჩამოთვლილი

9.

Function Declaration-ში რა ტიპის ფუნქციაა განსაზღვრული?

a)

მხოლოდ ანონიმური

b)

მხოლოდ სახელდებული

c)

ორივე

d)

არც ერთი

10.

True or False: Function Declaration შეიძლება იყოს arrow function ფორმატით.

a)

True

b)

False

11.

რომელი არის Function Expression-ის სწორი მაგალითი?

a)

function greet() { }

b)

let greet = function() { }

c)

const greet() => { }

d)

greet() = function { }

12.

Function Declaration და Function Expression-hoisting-ის თვალსაზრისით: რომელია hoisted?”

a)

Declaration იწევა ზემოთ, Expression — არა.

b)

Expression იწევა ზემოთ, Declaration — არა.

13.

რა გამოიტანს:

sayHello();

var sayHello = function() {

console.log("Hi");

};

a)

Hi

b)

Undefined

c)

Error

d)

არაფერი

14.

True or False: Function Expression-ს ყოველთვის უნდა ჰქონდეს სახელი.

a)

True

b)

False

15.

რა ტიპის მნიშვნელობა ინახება ცვლადში Function Expression-ის დროს?

a)

primitive

b)

reference (object)

c)

number

d)

undefined

16.

როგორ შეგვიძლია ფუნქციის გამოძახება Function Expression-ის შემთხვევაში?

a)

მხოლოდ მის განსაზღვრის შემდეგ

b)

ნებისმიერი ადგილას

c)

მხოლოდ შიდა ფუნქციიდან

d)

ვერაფრით

17.

როგორ შეგვიძლია ფუნქციის გამოძახება Function Expression-ის შემთხვევაში?

a)

მხოლოდ მის განსაზღვრის შემდეგ

b)

ნებისმიერ ადგილას

c)

მხოლოდ შიდა ფუნქციიდან

d)

ვერაფრით

18.

რა არის IIFE (Immediately Invoked Function Expression)?

a)

function() { }();

b)

(function() { })();

c)

{function() { }}();

d)

function()() { };

19.

Function Expression-ის მაგალითში რა ტიპის ფუნქციას ვიღებთ?

const sayHi = function greet() { console.log("Hi") }

a)

სახელდებულ

b)

ანონიმურ

c)

ორმაგად განსაზღვრულ

d)

არასწორი სინტაქსი

20.

True or False: Function Expression–ით შექმნილი ფუნქცია ვერ გადაიწერება სხვა მნიშვნელობით.

a)

True

b)

False

21.

Arrow function-ს არ აქვს საკუთარი:

a)

scope

b)

this

c)

return

d)

პარამეტრები

22.

რომელი სინტაქსი სწორია?

a)

let sum = (a, b) => a + b;

b)

let sum(a, b) => { a + b; }

c)

let sum = a, b => return a + b;

d)

function => {}

23.

რა გამოიტანს:

const add = (a,b) => a+b;

console.log(add(2,3));

a)

5

b)

6

c)

7

d)

8

24.

Arrow function-ში რა არის განსხვავებული “this”-ის ქცევაში?

a)

იგი იღებს this-ს გარე scope-იდან.

b)

იგი აქვს საკუთარი this.

c)

იგი არ აქვს this.

d)

იგი ყოველთვის undefined-ია.

25.

Arrow function შეიძლება იყოს:

a)

Constructor

b)

Generator

c)

არც ერთი

d)

ორივე

26.

True or False: Arrow function-ს ავტომატურად აქვს return თუ {} არ არის გამოყენებუ

a)

True

b)

False

27.

Arrow function შეიძლება იყოს:

a)

Constructor

b)

Generator

c)

არც ერთი

d)

ორივე

28.

რა გამოიტანს: const say = () => console.log(this); say();

a)

Window/Global Object

b)

Function Object

c)

Undefined

d)

Error

29.

Arrow function-ის გამოყენების უპირატესობაა:

a)

მოკლე სინტაქსი

b)

ავტომატური binding “this”-ზე

c)

ორივე

d)

არც ერთი

30.

Arrow function-ში arguments ობიექტის ქცევა როგორია?

a)

არ არსებობს

b)

ყოველთვის ცარიელია

c)

ერთი და იგივეა რაც parent scope-ში

d)

ავტომატურად იქმნება

31.

True or False: Arrow function-ს შეიძლება ჰქონდეს default parameters.

a)

True

b)

False

32.

რა განსხვავებაა Function და Block scope შორის?

a)

Function scope ვრცელდება მთელ ფუნქციაზე, Block scope კი {} შიგნით.

b)

Block scope ვრცელდება მთელ ფუნქციაზე, Function scope კი {} შიგნით.

33.

True or False: let და const ბლოკური scope-ის მქონეა.

a)

True

b)

False

34.

რას გამოიტანს: if (true) { var x = 5; } console.log(x);

a)

5

b)

Error

35.

რას გამოიტანს: if (true) { let y = 5; } console.log(y);

a)

5

b)

Error

36.

რომელი მექანიზმი ქმნის ახალ scope-ს?

a)

ფუნქცია

b)

ციკლი

c)

{} ბლოკი

d)

ყველა ზემოთ ჩამოთვლილი

37.

რომელი მექანიზმი ქმნის ახალ scope-ს?

a)

ფუნქცია

b)

ციკლი

c)

{} ბლოკი

d)

ყველა ზემოთ ჩამოთვლილი

38.

როგორ შეგვიძლია დავიცვათ ცვლადები გლობალური დაბინძურებისგან?

a)

ფუნქციებში ჩავდოთ

b)

var გამოვიყენოთ

c)

console.log გამოვიყენოთ

d)

ყველგან დავწეროთ let

39.

True or False: Function Scope ყოველთვის მოიცავს მის parent block-ს.

a)

True

b)

False

40.

Lexical Scope ნიშნავს:

a)

Scope განისაზღვრება ფუნქციის გამოძახების დროს

b)

Scope განისაზღვრება ფუნქციის დაწერის ადგილით

c)

Scope განისაზღვრება კომპილაციის დროს

d)

Scope საერთოდ არ არსებობს

41.

True or False: შიდა ფუნქციას აქვს წვდომა გარე ფუნქციის ცვლადებზე.

a)

True

b)

False

42.

რომელი შემთხვევა არღვევს lexical scoping-ს?

a)

A) eval()

b)

B) hoisting

c)

C) recursion

d)

D) const usage

43.

ყველა ფუნქციას აქვს საკუთარი lexical environment.

a)

True

b)

False

44.

რომელი აღწერს სწორი კავშირის პრინციპს?

a)

A) Child → Parent → Global

b)

B) Global → Parent → Child

c)

C) Random

d)

D) მხოლოდ Global

45.

რა არის Scope Chain JavaScript-ში?

a)

A) ფუნქციის არგუმენტების სია

b)

B) მექანიზმი, რომელიც აერთიანებს სკოუფებს და აძლევს ცვლადებზე წვდომას

c)

C) DOM-ის სტრუქტურა

d)

D) ცვლადების ტიპების სია

46.

როგორ მუშაობს Scope Chain lookup?

a)

A) ცვლადს ეძებს მხოლოდ მიმდინარე ბლოკში

b)

B) ცვლადს ეძებს ქვემოდან ზემოთ — შიდა → გარე → გლობალურ სკოუფამდე

c)

C) მხოლოდ გლობალურ ცვლადებში ეძებს

d)

D) შემთხვევითა

47.

რა გამოიტანს კოდი: let a = 10; function outer() { let b = 20; function inner() { console.log(a + b); } inner(); } outer();

a)

10

b)

20

c)

30

d)

Error

48.

Scope Chain-ში როცა ცვლადი ვერ მოიძებნა არც ერთ დონეზე, რა ხდება?

a)

იქმნება ავტომატურად

b)

აგდებს ReferenceError-ს

c)

აბრუნებს undefined-ს

d)

გლობალურად ქმნის ცვლადს

49.

რომელი პრინციპით ეძებს JS ცვლადებს?

a)

Parent → Child

b)

Global → Local

c)

Local → Parent → Global

d)

Random

50.

True or False: Scope Chain არსებობს მხოლოდ ფუნქციების შემთხვევაში.

a)

True

b)

False

51.

როგორ უკავშირდება Scope Chain და Lexical Scope ერთმანეთს?

a)

Scope Chain იქმნება Lexical Scope-ის საფუძველზე

b)

Lexical Scope მუშაობს Scope Chain-ის შემდეგ

c)

ორი განსხვავებული მექანიზმია

d)

Scope Chain გამოიყენება მხოლოდ async ფუნქციებში

52.

რა გამოიტანს: let x = 5; function a() { let y = 10; function b() { let z = 15; console.log(x + y + z);

4 lines
53.

რა გამოიტანს: let x = 5; function a() { let y = 10; function b() { let z = 15; console.log(x + y + z); } b(); } a();

a)

15

b)

30

c)

25

d)

Error

54.

რომელ ფუნქციას არ ექნება წვდომა გარე scope-ში არსებულ ცვლადზე?

a)

ჩვეულებრივ Function Declaration-ს

b)

Arrow function-ს

c)

Global scope-ში აღწერილს

d)

eval()–ში აღწერილს, როცა strict mode-ია ჩართული

55.

რატომ არის Scope Chain მნიშვნელოვანი JS-ში?

a)

ეხმარება კოდს ცვლადების პოვნაში და მოდულურობაში

b)

აჩერებს hoisting-ს

c)

ამცირებს შესრულების სიჩქარეს

d)

საჭირო არაა თანამედროვე JS-ში

56.

Closure ნიშნავს:

a)

ფუნქციას რომელიც იძახებს საკუთარ თავს

b)

შიდა ფუნქციას რომელსაც აქვს წვდომა გარე ფუნქციის ცვლადებზე

c)

ფუნქციას რომელიც აბრუნებს undefined

d)

არაფერი განსაკუთრებულს

57.

True or False: Closure ინახავს ცვლადების მნიშვნელობებს, არა ბმულს (reference).

a)

True

b)

False

58.

Closure-ს გამოყენების ტიპური შემთხვევებია:

a)

მონაცემთა ინკაფსულაცია

b)

private ცვლადების შექმნა

c)

ფუნქციური მოდულები

d)

ყველა ზემოთ ჩამოთვლილი

59.

რომელი აღწერს closure-ის მეხსიერების პრობლემას?

a)

memory leak

b)

hoisting

c)

blocking

d)

garbage collection

60.

Closure შეიძლება შეიქმნას:

a)

მხოლოდ function declaration-ით

b)

ნებისმიერი ფუნქციის ტიპით

c)

მხოლოდ arrow function-ით

d)

მხოლოდ IIFE-ით

61.

როგორ შეგვიძლია გავწყვიტოთ closure reference?

a)

გავანულოთ ცვლადი

b)

გამოვიძახოთ delete

c)

ჩავანაცვლოთ null-ით

d)

ყველა ზემოთ ჩამოთვლილი

62.

როგორ მუშაობს Lexical Scope-ში lookup chain?

a)

ფუნქცია ეძებს ცვლადებს მხოლოდ საკუთარ სხეულში, სხვა scopes–ში ვერ მიწვდება.

b)

ფუნქცია ეძებს ცვლადებს მეორედ მოსვლით მთელი კოდის execution დროს, runtime–ზე ცვლილებებს უყურებს.

c)

ფუნქცია ეძებს ცვლადებს თავისი განსაზღვრის ადგილიდან ზემოთ მდებარე scopes-ში, სანამ არ იპოვის ან არ დასრულდება Global Scope.

d)

ფუნქცია ეძებს ცვლადებს ქვედა ფუნქციებში, სადაც შეიძლება იმყოფებოდეს.

63.

რას გამოიტანს:

const a = 5;

function x() {

const b = 10;

return function() {

return a + b;

}

}

console.log(x()());

a)

5

b)

10

c)

15

d)

x

64.

როგორ ეწოდება Lexical Scope-ზე დაფუძნებულ მეხსიერების შენარჩუნებას?

a)

Hoisting

b)

Closure

c)

Callback

d)

Prototype inheritance

65.

რატომ არის მნიშვნელოვანი Lexical Scope JS-ში?

a)

იცავს ცვლადებს გლობალური კონფლიქტებისგან

b)

განაპირობებს Hoisting–ს

c)

ქმნის asynchronous ფუნქციებს

d)

განსაზღვრავს HTML ელემენტების სტილს

66.

რასგამოიტანს:

function makeCounter() {

let count = 0;

return function() {

count++;

return count;

}

}

const counter = makeCounter();

console.log(counter());

console.log(counter());

a)

0 და 1

b)

1 და 2

c)

1

d)

2

67.

რატომ არ იკარგება “count”-ის მნიშვნელობა ზემოთ მოცემულ მაგალითში?

a)

იმიტომ, რომ count რეგულარულად ასინქრონულად შენახულა

b)

რადგან count გლობალური ცვლადია

c)

იმიტომ, რომ inner ფუნქცია ქმნის closure, რომელიც ინახავს outer scope–ის ცვლადს

d)

იმიტომ, რომ JavaScript ავტომატურად ინახავს ყველა ცვლადს ფუნქციის დასრულების შემდეგ