Nội dung text [HK222] Một số câu hỏi ôn tập (chưa ôn trên lớp).docx
1. Deep and shallow binding Giải: Static-scope + deep binding - Bài toán bắt đầu với câu lệnh gọi SUB1. - Khi sub2 được gọi tại dòng SUB2(2,3,FUNC) và đi vào trong môi trường SUB2 , x = 2; y = 3. - Z = |x – y| = 1; x=2 , y=3 - Z = (F(x) + F(y))* Z / 2 , x = 2, y = 3, z = 2 Hàm F(2) được gọi với V = 2 ; X = 4 ; Y = 2. Trong hàm này, X, Y là các biến toàn cục. Giá trị X = 4 được lấy ở hàm main, giá trị Y bằng 2 được lấy tại SUB1. Khi đó, F(2) = 2*4 + 2 = 10 ; F(Y) được gọi với V = 3 ; X = 4; Y = 2 và F(3) = 3*4 + 2 = 14 Z = [ F(2) + F(3) ] * 1 / 2 = 12. Dynamic scope + shallow binding. - Bài toán bắt đầu với câu lệnh gọi SUB1. - Khi sub2 được gọi tại dòng SUB2(2,3,FUNC) và đi vào trong môi trường SUB2, , x = 2; y = 3. Hàm f(2) được gọi. Trong môi trường của f(2), ta có v = 2, x = 2, y = 3 . 2*2 + 3= 7 - Hàm f(3) được gọi. Trong ……….., ta có v= 3, x= 2, y= 3. - 3*2 + 3 = 9 Vậy ( F(2) + F(3) ) *1 / 2 = 8. function f1() { var x = 10; // shallow binding function f2(fx) { var x; x = 6; // deep binding. fx();