1. //1.
    2. var x=0,
    3. y=1;
    4. function fn(y){
    5. y+=2;
    6. fn=function(x){
    7. x+=3;
    8. console.log(x+y);
    9. };
    10. console.log(x+y);
    11. }
    12. fn(4);
    13. fn(5);
    14. console.log(x+y);
    15. //2.
    16. var x = 2;
    17. var obj = {
    18. x: 3,
    19. fn: function (x) {
    20. this.x += --x;
    21. console.log(x);
    22. }
    23. };
    24. var fn = obj.fn;
    25. obj.fn(4);
    26. fn(5);
    27. console.log(x, obj.x);
    28. //3.
    29. var x = 3,
    30. obj = { x: 2 };
    31. obj.fn = (function () {
    32. x++;
    33. this.x += x;
    34. return function (y) {
    35. x++;
    36. y += x;
    37. this.x += y;
    38. console.log(x);
    39. }
    40. })();
    41. var fn = obj.fn;
    42. obj.fn(1);
    43. fn(4);
    44. console.log(x, obj.x)
    45. //4.
    46. //选项卡
    47. //5.
    48. let y = {
    49. n: 10,
    50. fn: (function (x) {
    51. console.log(x);
    52. return function () {
    53. console.log(this.n + x);
    54. }
    55. })(y.n) //=>Uncaught ReferenceError: Cannot access 'y' before initialization
    56. };
    57. y.fn();
    58. //6.
    59. //this问题总结