博客列表 >js变量与常量的区别;函数与匿名函数的区别;闭包原理与实现

js变量与常量的区别;函数与匿名函数的区别;闭包原理与实现

世纪天城
世纪天城原创
2021年01月05日 20:43:33677浏览
  1. 实例演示变量与常量的区别;

变量:

变量命名规范:以字母、数字、下划线 _ 、和符号$ ,但不能以数字作开头并严格区分大小写;不得使用关键字或保留字。

例如:
驼峰式: userName,大驼峰UserName, 匈牙利: oBtn, _sex, _salary

变量的特点:变量可重新声明;并可对变量重新赋值来更新变量的值;

注:变量只声明,不赋值,则返回值为undefined。

常量

常量声明时必须初始化,并不可重新赋值,更不可重新声明。

注:常量一旦声明则无法改变常量的值。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>js变量与常量</title>
  8. </head>
  9. <body>
  10. <script>
  11. // 变量:
  12. // 变量用let关键字声明
  13. // 第一次声明为赋值
  14. let username = 'abc';
  15. // 第二次为更新
  16. username = '123';
  17. // 也可以声明一个空变量在赋值
  18. let a;
  19. // 赋值
  20. a='a';
  21. // js的输出语句
  22. console.log(username);
  23. console.table(username);
  24. console.dir(username);
  25. //常量:
  26. // 声明时必须初始化
  27. const app = '122';
  28. const APP ='app';
  29. // 注:常量一般用大写字母来定义,并一旦定义其常量的值不能被更新
  30. </script>
  31. </body>
  32. </html>
  1. 函数与匿名函数的区别

函数

函数的组成由function关键字 函数名(){}组成。
匿名函数:则没有函数名并可以简化为箭头函数,而普通函数则不行。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>函数与匿名函数的区别</title>
  8. </head>
  9. <body>
  10. <script>
  11. // 函数的组成由function关键字 函数名(){}组成。
  12. function a(){
  13. let a =1;
  14. let b =2;
  15. return a+b;
  16. }
  17. console.log(a());
  18. // 匿名函数:则没有函数名并可以简化为箭头函数
  19. let b = function (){
  20. let c = '你好js';
  21. return c;
  22. }
  23. console.log(b());
  24. // 可以简化为箭头函数
  25. let p = ()=> c = '你好php';
  26. console.log(p());
  27. </script>
  28. </body>
  29. </html>
  1. 箭头函数的参数特征

箭头函数是用来简化匿名函数的语法糖,将普通函数的“function”关键字和函数名都删掉,并使用“=>”连接参数列表和函数体
基础语法;如果只有一条语句,可以省略函数的”{}”;如果只有一个参数,连小括号都可以不用了。
注:箭头函数没有原型属性prototype,不能当构造函数用;且箭头函数中的this,始终与它的上下文绑定。

  1. 闭包原理与实现并演示它
    js共有三种作用域: 全局, 函数,块
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>作用域与闭包</title>
  8. </head>
  9. <body>
  10. <script>
  11. // js三种作用域: 全局, 函数,块
  12. // 1. 全局作用域,公共变量
  13. let ab = '123';
  14. // 2. 函数作用域
  15. function a(){
  16. // 私有变量 函数外无法访问
  17. let b = '321';
  18. }
  19. // 3. 块作用域
  20. {
  21. let c = 1;
  22. const B = "Hello";
  23. }
  24. // 闭包
  25. // 自由变量: 即不是函数参数变量也不是私有变量,存在于函数调用上下文中
  26. // 闭包: 能够访问自由变量的函数,所以理论上讲,任何函数都是闭包
  27. let num = 100;
  28. function add(a, b) {
  29. // t: 私有变量
  30. let t = 0;
  31. // num: 自由变量
  32. return t + a + b + num;
  33. }
  34. console.log(add(1,2));
  35. // 闭包函数
  36. function a() {
  37. // n 相对于a是私有变量,但是相对于返回的匿名函数就是一个自由变量
  38. let n = 100;
  39. // 这个返回的子函数就是闭包
  40. return function () {
  41. return n;
  42. };
  43. }
  44. console.log(a()());
  45. </script>
  46. </body>
  47. </html>
  1. 四种高阶函数,全部实例演示
    高阶函数: 使用函数为参数或者将函数做为返回值的函数
    ```html
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>高阶函数</title>
    </head>
    <body>
    <script>

    1. // 高阶函数: 使用函数为参数或者将函数做为返回值的函数
    2. // 1. 回调函数
    3. document.addEventListener("click", function () {
    4. alert("Hello World~~");
    5. });
    6. // 2. 偏函数: 简化了声明时的参数声明
    7. let sum = function (a, b) {
    8. return function (c, d) {
    9. return a + b + c + d;
    10. };
    11. };
    12. let f1 = sum(1, 5);
    13. console.log(f1(5, 4));
  1. // 柯里化
  2. sum = function (a) {
  3. return function (b) {
  4. return function (c) {
  5. return function (d) {
  6. return a + b + c + d;
  7. };
  8. };
  9. };
  10. };
  11. // 简化了调用参数
  12. let res = sum(10)(20)(30)(40);
  13. console.log(res);
  14. // 4. 纯函数
  15. // 完全独立于调用上下文,返回值只能受到传入的参数影响
  16. function getDate() {
  17. // 调用当前时间轴
  18. return Date.now();
  19. }
  20. console.log(getDate());
  21. // 是纯函数
  22. function add(a, b) {
  23. console.log(a + b);
  24. }
  25. add(1, 20);
  26. </script>

</html>
```

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议