JavaScript概述

学习目标:

对JavaScript有一个大致的了解。


学习内容:

  1. 它有原始数据类型和对象类型
    1)数据类型
    javascript有七种基元类型
    Number
    Infinity
    String
    Boolean
    符号
    Undefined
    Null

    五种对象类型
    Function
    Array
    Date
    RegExp
    Error

    严格来说,函数不是JavaScript中的特殊数据结构,只是可以调用特殊类型的对象。

  2. 变量
    声明变量的方法:let、const、var。
    let声明块级变量。
    const声明永远不会更改的变量,这个变量不能重新赋值。如果声明的是对象,它不会阻止变量值的突变。
    const obj = {};
    obj.a = 1; // no error
    console.log(obj); // { a: 1 }
    var声明的变量具有令人惊讶的行为(它们不是块范围的),JavaScript 代码中不鼓励使用它。它是全局变量,任何地方想要调用它都可以。但是声明不赋值只会为undefined。
  3. 运算符
    数字运算符:+、-、*、/、%、=、^、+=、-=、++、--。
    +运算符还可以执行字符串连接。
    “3”+4+5最后结果是字符串
    3+4+“5”最后结果是75(3+4=7,+字符5)

    比较运算符:<、>、<=、>=、==、===、!=、!==。
    其中==只比较值,===比较值和类型。
    123 == "123"; // true
    1 == true; // true
    123 === "123"; // false
    1 === true; // false

    逻辑运算符:&&、||。
    &&:只要第一个值为假,后面不用判断全为假。
    ||:只要第一个为真,后面不用判断全为真。
    这意味着他们是否会执行第二个操作数取决于第一个操作数。
    &&:访问空对象属性之前检查其属性
    ||:对于缓存值(当假值无效时)

  4. 语法(简略)
    JavaScript 语法与 C 家族非常相似。
    注释://、/**/、#。
    分号是可选的。也就是说可以在每个代码后面不写分号也可以。
  5. 控制结构
    JavaScript 具有与 C 系列中其他语言类似的一组控制结构。
    1)if……else if……else……
    2)while(){}
    3)for(let i;i<number;i++){}
    4)for……of……(遍历对象)
    5)for……in……(遍历变量)
    6)switch……case……break;default……
    7)错误使用try捕获语句
    try{}catch(e){console.error(e);}
    8)throw语句引发错误
  6. 对象
    JavaScript 对象可以被认为是键值对的集合。
    类似于:
    Python中的字典。
    Perl 和 Ruby 中的哈希值。
    C 和 C++ 中的哈希表。
    Java中的HashMaps。
    PHP 中的关联数组。

    JavaScript 对象是哈希值。与静态类型语言中的对象不同,JavaScript 中的对象没有固定的形状——可以随时添加、删除、重新排序、更改或动态查询属性。对象键始终是字符串或符号——即使是数组索引(规范的整数)实际上也是底层的字符串。

    创建一个对象:
    const obj = {
      name: "Carrot",
      for: "Max",
      details: {
        color: "orange",
        size: 12,
      },
    };
    使用点语法或方括号【】访问对象属性。使用点表示法时,键必须是有效的标识符。另一方面,括号允许使用动态键值为对象编制索引。
    obj.name = "Simon";
    const name = obj.name;

    obj["name"] = "Simon";
    const name = obj["name"];

    两个单独创建的对象永远不会相等,它们是不同的引用。

  7. 数组
    1)JavaScript 中的数组实际上是一种特殊类型的对象。它有一个神奇的属性。length始终比数组中的最高索引多 1。
    const a = ["dog", "cat", "hen"];
    a.length; // 3
    2)length它会自动更新。
    const a = ["dog", "cat", "hen"];
    a[100] = "fox";
    console.log(a.length); // 101
    console.log(a); // ['dog', 'cat', 'hen', <97 empty items>, 'fox']
    3)查询不存在的数组索引,则会得到undefined。
    4)数组可以具有任何元素,并且可以任意增长或收缩。
    5)数组可以for……of……和for循环进行迭代。
    6)map() 会为每个数组元素应用回调,并返回一个新数组:
    const babies = ["dog", "cat", "hen"].map((name) => `baby ${name}`);
    // babies = ['baby dog', 'baby cat', 'baby hen']
    还有其他有关数组的方法,感兴趣的可以去搜索学习。

  8. 功能
    1)函数是理解JavaScript的核心组件。最基本的函数声明如下所示:
    function add(x) {
      const total = x + x;
      return total;
    }
    2)函数未使用 return 语句(或没有值的空返回),则返回undefined。
    3)传递的参数多于预期,则该函数将忽略额外的参数
    add(2, 3, 4); // 5
    // added the first two; 4 was ignored
    4)参数语法允许将调用者传递的所有额外参数收集到一个数组中
    function avg(...args) {
      let sum = 0;
      for (const item of args) {
        sum += item;
      }
      return sum / args.length;
    }
    avg(2, 3, 4, 5);
    5)方便地打包和解包对象。
    function area({ width, height }) {
      return width * height;
    }
    console.log(area({ width: 2, height: 3 }));
    6)箭头函数
    const avg = (...args) => {
      let sum = 0;
      for (const item of args) {
        sum += item;
      }
      return sum / args.length;
    };
    7)递归函数
    8)函数是一等对象,意味着函数时可以分配给变量,作为参数传递给其他函数,
    9)内部函数:就是函数里面还有函数。
    function Func() {
      const a = 1;
      function Func1() {
        const b = 4; // parentFunc can't use this
        return a + b;
      }
      return Func1(); // 5
    }
    可以减少全局范围内的函数数量。
    抵消了全局变量的诱惑。
    编写复杂代码时,通常很容易使用全局变量在多个函数之间共享值,这会导致代码难以维护。
    嵌套函数可以共享其父级中的变量,可以使用该机制将函数耦合在一起,而不会污染全局命名空间。

  9. 功能
    JavaScript 提供的类语法与 Java 等语言非常相似。
    class Person {
      constructor(name) {
        this.name = name;
      }
      sayHello() {
        return `Hello, I'm ${this.name}!`;
      }
    }
    const p = new Person("Maria");
    console.log(p.sayHello());
    JavaScript 类只是必须使用new运算符实例化的函数。

  10. 异步编程
    JavaScript本质上是单线程的。没有平行仅并发。异步编程由事件循环提供支持,该事件循环允许一组任务排队并轮询完成。
    同步代码优先执行,异步代码等同步代码执行完毕再去执行。
    JavaScript 中编写异步代码有三种惯用方法:
    基于回调(如setTimeout())。
    基于承诺。
    async/await,这是承诺的语法。

  11. 模块
    模块通常是一个文件,由其文件路径或 URL 标识。您可以使用导入和导出语句在模块之间交换数据
    import { foo } from "./foo.js";
    const b = 2;
    export const a = 1;
    不同的运行时可能使用不同的模块系统。例如,Node.js使用包管理器npm。

上面就是介绍了一下,以下的部分可以自己进行探索:继承和原型链、闭 包、正则表达式、迭 代、一些API等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值