博客列表 >JS 中变量、常量、函数、作用域及闭包的初步认识

JS 中变量、常量、函数、作用域及闭包的初步认识

zg的php学习
zg的php学习原创
2021年10月02日 13:59:32422浏览

JS 中变量、常量、函数、作用域及闭包的初步认识

变量和常量的区别

  • ES6 中,变量的声明使用 let 关键字,常量使用 const 关键字
  • 变量可以先申明后赋值,常量在声明的同时必须赋值
  • 变量的值可以被多次修改,常量的值不能被修改

函数的种类

1.普通函数

语法:

  1. function sum(n1, n2) { return n1 + n2; }

2.匿名函数

语法:

  1. function (n1, n2) { return n1 + n2; };

3.立即执行函数(IIFE)

语法:

  1. (function (n1, n2) { return n1 + n2; })(10,20);

4.箭头函数

箭头函数是对匿名函数的一种简化方式

  1. function (n1, n2) { return n1 + n2; };
  2. <!--用箭头函数简化-->
  3. (n1, n2) => n1 + n2;

5.标签函数

标签函数就是使用模板字符串做为参数的函数

  1. //函数定义
  2. function sum(strings, number, price) {
  3. return `${strings[0]}${number}
  4. ${strings[1]}${price}
  5. 总金额:${number * price}`;
  6. }
  7. //函数调用
  8. sum`数量:${10}单价:${1900}`;

作用域和闭包

作用域主要有以下二种:

  • 全局作用域:函数外定义的,全局都能访问
  • 函数作用域:函数内定义的,只能在当前函数内部访问

由于作用域的存在,函数在查找变量时,会从当前作用域开始,逐级向上查找,形成一条作用域链。当满足特定条件时,函数会形成闭包。形成闭包的二个基本条件:

  • 存在嵌套函数
  • 子函数引用外部函数的自由变量(非全局)

简单理解:闭包就是子函数引用了外部作用域(非全局)的自由变量,导致外部函数无法被释放。

示例:

  1. //这个 函数形成闭包
  2. function funcA() {
  3. let i = 0;
  4. function funcB() {
  5. return (i = i + 1);
  6. }
  7. return funcB;
  8. }
  9. //函数调用
  10. let f = funcA(); //调用funcA,返回 functB,执行完成后funcA不会被释放,因为其内部变量i被funcB引用着
  11. let result = f(); //相当于调用functB,此时返回值=1
  12. result = f(); //相当于再次调用functB,此时返回值=2
  13. result = f(); //相当于再次调用functB,此时返回值=3
  14. console.log(result);
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议