JS基础大纲

js基础

历史/概况

流程图

基础语法

注释

  • 单行
  • 多行
  • 文档注释

语句

表达式

  • 定义:有值的东西都是表达式

变量

  • 关键字

    • function
    • var
    • let
    • const
    • class

      • 内部自己进行严格模式‘’
  • 所有的变量都是在栈里面创建

数据类型

  • 基本

    • null

      • typeof得到的是object
    • undefined

    • number

      • NaN
      • infinite
    • string

    • boolean
    • symbol,用来做属性名称的,唯一的,防止命名冲突
  • 引用

    • object
  • 假值(隐式转换为false):null、undefined、0、NaN、""、false 
    直接转换的函数都是真值

数据类型的转换

  • 期望是什么,就往哪个方向转

运算符(所有的运算符都有运算结果)

  • 一目

    • +
    • -
    • ++

    • ~(位运算)
  • 二目

    • +
    • -
    • *
    • **
    • /
    • %
    • =
    • instanceOf
    • ==/===
    • !=/!==
    • >/>=
    • </<=
    • &&/& (找假值)
    • ||/| (找真值)
  • 三目

    • 布尔表达式?表达式:表达式;

流程控制语句

条件

  • if
  • switch

循环

  • for
  • while
  • do while

continue

break

函数基础

创建

  • let foo=function(){}
  • function foo(){}
  • let foo=new Function();

调用

  • 函数()

三要素

  • 函数名

    • 动宾
  • 参数:让函数活起来。

    • 形参

      • 普通
      • 默认值
      • 不定参(...):接剩下的所有参数

        • 不定参只能放在最后
        • 不定参只能有一个
    • 实参(传入有值的东西)

    • arguments(生成的时候放在当前执行上下文上)

      • 一个接受所有实际参数的伪对象数组
      • 注意:箭头函数没有arguments
  • 返回值

    • return

      • 一个作用结束函数执行
      • 将一个值返回函数调用处。

解构赋值

数组

  • let [a,...b=99,c]=[1,2,3,4,5,6,7,8,9]
  • let a,b,c; [a,...b=99,c]=[1,2,3,4,5,6,7,8,9];

对象

  • let {name:a=10,age,gender:b,phone=77}={name:1,age:2,gender:3};
  • let a,age,b,phone; ({name:a=10,age,gender:b,phone=77}={name:1,age:2,gender:3});

数组解构

对象结构

扩展运算符

...

数组扩展

  • let a=[...[1,2,3],...[4,5,6]]
  • Math.ma(...[1,2,3,4,5,6,7,8]);

对象扩展

  • let obj = {...{name:"zs " ,gender:"male"},,..{age:18,name:"ls"}}将两个对象融合在一起了,重复的后面覆盖前面的。

函数进阶

函数作用域(局部作用于),韩珊瑚/方法中的this的确定,函数提升和变量提升,回调函数,递归函数,life

作用域

  • 全局作用域
  • 局部作用域

    • 函数级作用域
    • 块级作用域

      • 是Es6单独提出来的,所用ES6声明变量的关键字都支持

this

  • new

函数提升和变量提升

  • 概念
  • 原理

回调函数

  • function foo(fn,a){fn();}
  • 把一个函数作为参数传入另外一个函数,前面那个函数就叫做回调函数,后面那个函数就被叫做高阶函数。

递归函数

  • 当一个函数通过,直接或则间接的方式,调用自己本身,那么着这个函数就叫做递归函数,递归函数一般需要一个递归出口。

life,立即执行函数

  • 重点:前面的函数怎么把它表达式化

箭头函数

引用类型

对象

  • 创建

    • let obj = {name:"23"};
    • let obj = new Object();
  • 属性和方法

    • let age =18,key = "gender";let obj = {name:"zs",age,[key]:"male"(这是以变量的形式传入值),get color(return "red"),set color(value)}//key可以是一个字符串表达式
    • 方法是特殊的属性,属性值是函数时,这个属性就叫做方法。
  • 属性和方法的访问

    • 属性名有两种

      • 字符串
      • symbol:唯一的,创建的名字相同,也是不同的。
    • .

      • obj.name/obj.age
      • obj.3,错误,点调用是不能访问命名法错误的方法。
    • []

      • obj[key]:key可以是字符串表达式

数据解构

  • 数组

    • 特点

      • 有序
    • 创建

      • let arr = [1,2,3;]
      • let arr =new Array();
    • 特性

      • 索引

        • Index

          • 访问

            • console.log(arr);
          • 添加

            • arr[7]=10
          • 修改

            • arr[1]=77
          • 删除

            • delece arr[1];数组长度无变化
        • 下列操作都是基于数组:【1,2,3,4】

      • 长度

        • length

          • 删除

            • arr.length = 0
          • 增加(空位子)

            • arr.length = 10
    • 数组的API

      • 基本

        • 增删查改

          • push/unshift
          • pop/shift/splice
          • find/indexOf/includes
          • 修改都是使用下标修改
        • 连接

          • concat
        • 拼接

          • join
        • 扁平化

          • flat,将数组嵌套的变化为平一级,每一次往上平一级
        • 反转

          • reverse,数组反转
      • 遍历

        • foreach
        • filter

          • 过滤满足条件的数据
        • some

        • every
        • readuce/reduceRight

          • 迭代,一开始获取2个数据,结合换成一个再跟下一个结合,以此类推,完成。
    • 数组静态方法

      • from:能将多数可迭代数据装换为数组
  • set

    • 介绍
    • API

      • add(item);添加信息,独有。**
      • 链式调用:s.add(item).add(item)......;
      • 删除 delete(item) remove:

        • s.delete(6);
        • console.log(s);
      • 查 has():返回Boolean值 s.has(item);

      • 清空 clear();:s.clear();清空所有的元素
      • 遍历 for of 、forEach():
  • map

    • 介绍
    • API

      • clear
      • delete
      • forEach
      • get
      • has
      • set

内置对象

构造器对象:Object、Boolean、String、Number、Function、Array、RegExp、Date、Error;

还有剩下3个对象:Math、JSON、全局对象。

包装对象:都是在点的时候自动发生。

  • 三种原始类型的值:数值、字符串、布尔值,在特定条件下,也会自动转为对象,也就是原始类型的“包装对象”( wrapper )
  • 所谓“包装对象”,是指与数值、字符串、布尔值分别相对应的 Number、String、Boolean 三个内置对 象。这三个内置对象可以把原始类型的值转换成(包装成)对象;同样的,包装后的对象也能转换成 (解包装成)原始类型的值;这个过程在?定条件下可以?发的完成,我们就可以称这两个过程分别 为“自动装箱”和“自动拆箱”

包装对象:都是在点的时候自动发生。

  • 三种原始类型的值:数值、字符串、布尔值,在?定条件下,也会?动转为对象,也就是原始类型的“包装对象”( wrapper )
  • 所谓“包装对象”,是指与数值、字符串、布尔值分别相对应的 Number、String、Boolean 三个内置对 象。这三个内置对象可以把原始类型的值转换成(包装成)对象;同样的,包装后的对象也能转换成 (解包装成)原始类型的值;这个过程在?定条件下可以?发的完成,我们就可以称这两个过程分别 为“自动装箱”和“自动拆箱”

两种包装对象共同具有的方法:valueOf() 和 toString()。

Error对象

  • ECMAScript 定义了六种类型的错误。除此之外,还可以使? Error 构造?法创建?定义的 Error 对象,并使用 throw 语句抛出该对象。使用 try-catch-finally 语句处理异常

    • //捕获错误try{console.log(a)}catch(e){//提示错误console.log(e.toString();//继续抛出 throw e)}finally{ console.log("finally");}
  • ReferenceError :找不到对象时

  • TypeError :错误的使?了类型或对象的?法时
  • RangeError :使?内置对象的?法时,参数超范围
  • SyntaxError :语法写错了
  • EvalError :错误的使?了 Eval
  • URIError : URI 错误

Data

RegExp

变量环境

词法环境

 

JS基础大纲

上一篇:嵌入式web服务器之httpd、lighttpd和GoAhead


下一篇:模型压缩之Learning Efficient Convolutional Networks through Network Slimming