当前位置:Gxlcms > JavaScript > js中闭包的解释以及变量声明提前的例子(代码)

js中闭包的解释以及变量声明提前的例子(代码)

时间:2021-07-01 10:21:17 帮助过:16人阅读

本篇文章给大家带来的内容是关于js中闭包的解释以及变量声明提前的例子(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

闭包

在函数A中声明了函数B,函数B中使用了函数A的作用域中的变量,且函数A返回(return)了函数B,那么函数B就对函数A的作用域形成了闭包,函数A调用完毕之后,只要返回的函数B存在,函数A的作用域也一直存在

  1. function makeFn(){
  2. var n1 = 100;
  3. function fn(){
  4. var n2 = 200;
  5. console.log(n1);
  6. }
  7. return fn;
  8. }
  9. var f2 = makeFn();
  10. f2();

闭包可以实现对象的私有属性,如:

  1. var obj = {
  2. name:"sunset",
  3. age:12,
  4. speak:function(){
  5. console.log("我是"+this.name);
  6. }
  7. }
  8. console.log(obj.name);

再来一个例子:

  1. function makeObj(){
  2. var name = "sunset";
  3. var age = 12;
  4. var obj = {
  5. speak:function(){
  6. console.log("我叫"+name);
  7. }
  8. }
  9. return obj;
  10. }
  11. console.log(obj.speak());

最后一个非常好的例子:(导入jQuery后执行看看)

  1. <script>
  2. for (var i = 0; i < 10; i++) {
  3. function makeFn(index) {
  4. function fn() {
  5. console.log(index)
  6. }
  7. return fn;
  8. }
  9. var btn = makeFn(i);
  10. $("<button></button>")
  11. .text(i + 1)
  12. .appendTo(document.body)
  13. .on("click",btn)
  14. }
  15. </script>

变量声明提前:

在js的作用域中,所有变量的声明都会被提前,但是赋值不会提前(变量提前就不演示了,学到这已经不用解释了)

  1. var a = 3;
  2. function f1(){
  3. console.log(a);
  4. var a = 10;
  5. }
  6. f1();

等同于

  1. function f1(){
  2. var a;
  3. console.log(a);
  4. a = 10;
  5. }
  6. f1();

相关推荐:

PHP 闭包获取外部变量和global关键字声明变量的区别讲解_php实例

JS声明变量详解

JavaScript闭包-闭包中的变量和this对象

以上就是js中闭包的解释以及变量声明提前的例子(代码)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行