sách gpt4 ăn đã đi

Các tình huống sử dụng của việc đóng JavaScript

In lại Tác giả: qq735679552 Thời gian cập nhật: 29-09-2022 22:32:09 34 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

这篇CFSDN的博客文章JavaScript 闭包的使用场景由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1、闭包 。

  由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部变量的函数。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁.

  比如下面的代码:

?
1
2
3
4
5
6
7
8
9
chức năng f1() {
  của chúng tôi n = 999;
  chức năng f2() {
  console.log(n);
  }
  trở lại f2;
}
của chúng tôi result = f1();
result(); //999

  函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的.

  这就是Javascript语言特有的"链式作用域"结构(chain scope),子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立.

  既然f2可以读取f1中的局部变量,那么只要把f2作为返回值,就可以在f1外部读取它的内部变量了.

2、闭包的使用场景 。

1.setTimeout 。

  原生的setTimeout传递的第一个函数不能带参数,通过闭包可以实现传参效果.

?
1
2
3
4
5
6
7
8
chức năng f1(a) {
  chức năng f2() {
   console.log(a);
  }
  trở lại f2;
}
của chúng tôi fun = f1(1);
setTimeout(fun,1000); //一秒之后打印出1

2.回调 。

  定义行为,然后把它关联到某个用户事件上(点击或者按键)。代码通常会作为一个回调(事件触发时调用的函数)绑定到事件.

  Ví dụ: đoạn mã sau:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
< html chỉ = "vi" >
< cái đầu >
  < siêu dữ liệu bộ ký tự = "UTF-8" >
  < tiêu đề >测试 tiêu đề >
cái đầu >
< thân hình >
  < Một href = "#" quan hệ = "nofollow bên ngoài" quan hệ = "nofollow bên ngoài" quan hệ = "nofollow bên ngoài" nhận dạng = "size-12" >12 Một >
  < Một href = "#" quan hệ = "nofollow bên ngoài" quan hệ = "nofollow bên ngoài" quan hệ = "nofollow bên ngoài" nhận dạng = "size-20" >20 Một >
  < Một href = "#" quan hệ = "nofollow bên ngoài" quan hệ = "nofollow bên ngoài" quan hệ = "nofollow bên ngoài" nhận dạng = "size-30" >30 Một >
 
  < kịch bản kiểu = "văn bản/javascript" >
   function changeSize(size){
    return function(){
     document.body.style.fontSize = size + 'px';
    };
   }
 
   var size12 = changeSize(12);
   var size14 = changeSize(20);
   var size16 = changeSize(30);
 
   document.getElementById('size-12').onclick = size12;
   document.getElementById('size-20').onclick = size14;
   document.getElementById('size-30').onclick = size16;
 
  kịch bản >
thân hình >
html >

  当点击数字时,字体也会变成相应的大小.

3.函数防抖 。

  在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时.

   实现的关键就在于setTimeOut这个函数,由于还需要一个变量来保存计时,考虑维护全局纯净,可以借助闭包来实现.

   Như được hiển thị trong đoạn mã sau:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*
* chức năng fn [chức năng] yêu cầu chống rung
* độ trễ [số] mili giây, giá trị giới hạn chống rung
*/
chức năng debounce(fn,trì hoãn){
  giờ ánh sáng = vô giá trị //Với sự trợ giúp của việc đóng cửa
  trở lại chức năng () {
   nếu như (bộ đếm thời gian)
    clearTimeout(bộ đếm thời gian) //Nhập câu lệnh nhánh này, cho biết rằng nó hiện đang trong quá trình tính thời gian và sự kiện tương tự đã được kích hoạt lại. Vì vậy, chúng ta cần hủy thời gian hiện tại và bắt đầu lại thời gian.
    bộ đếm thời gian = setTimeOut(fn,trễ)
   } khác {
    bộ đếm thời gian = setTimeOut(fn,trễ) // Vào nhánh này có nghĩa là tính thời gian hiện không chạy, sau đó bắt đầu tính thời gian
   }
  }
}

4. Đóng gói các biến riêng tư.

  Như đoạn mã sau: Sử dụng js để tạo bộ đếm.

  Phương pháp 1

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
hàm f1() {
  tổng var = 0;
  var obj = {
   tăng:hàm () {
    tổng++;
    trả về tổng;
   }
};
  trả về đối tượng;
}
cho kết quả = f1();
console.log(result.inc());//1
console.log(result.inc());//2
console.log(result.inc());//3

  Trong đối tượng được trả về, một bao đóng được triển khai mang biến cục bộ x và biến x hoàn toàn không thể truy cập được từ mã bên ngoài.

  Phương pháp 2

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
chức năng f1() {
  của chúng tôi tổng = 0;
  chức năng f2() {
   tổng++;
   trở lại f2;
  }
  f2.giá trị của = chức năng () {
   trở lại tổng hợp;
  };
  f2.toString = chức năng () {
   trở lại tổng+ '' ;
  };
  trở lại f2;
}
//Thực thi hàm f1 và trả về hàm f2
console. log(+f1()); //0
console.log(+f1()()) //1
console.log(+f1()()()) //2

Tất cả các kiểu dữ liệu js đều có hai phương thức, valueOf và toString, ngoại trừ null. Phương thức valueOf(): trả về giá trị ban đầu của đối tượng được chỉ định. Phương thức toString(): Trả về biểu diễn chuỗi của đối tượng. Trong các phép toán số, valueOf được gọi đầu tiên. Trong các phép toán chuỗi, toString được gọi đầu tiên sum+' ' là dữ liệu kiểu chuỗi.

Trên đây là chi tiết về các tình huống sử dụng của việc đóng JavaScript. Để biết thêm thông tin về việc đóng JavaScript, vui lòng theo dõi các bài viết liên quan khác của tôi! .

Liên kết gốc: https://www.cnblogs.com/gg-qq/p/11399152.html.

Cuối cùng, bài viết này về các kịch bản sử dụng các bao đóng JavaScript kết thúc ở đây. Nếu bạn muốn biết thêm về các kịch bản sử dụng các bao đóng JavaScript, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ tôi trong tương lai. ! .

34 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress