一、ES5及ES6

  (一)严格模式

  (二)bind/call/apply(改变上下文this指向,都是函数对象的方法)

    1、bind:返回值是一个函数

    2、call:返回值是一个对象

    3、apply:返回值是一个对象

  (三)JSON.parse/JSON.stringify

    1、JSON.parse():将json字符串转为json对象,严格模式下使用(IE7及以下不兼容)

    2、JSON.stringify():将json对象转为json字符串,严格模式下使用(IE7及以下不兼容)

  (四)let:取代var,声明变量

    1、script:全局作用域

      function:局部作用域

      let:块级作用域

        1)声明let声明变量,会产生块级作用域

        2)let声明的变量不在做变量提升,只能先声明,后使用

        3)同一个作用域,let不可以重复声明同一个变量

        4)for循环有两个块级作用域,for本身是一个作用域,for循环体又是for中的一个子级作用域

        5)let声明的变量不再是window的属性

      2、const:用于声明常量

  (五)变量的解构赋值:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)

    1、以前,为变量赋值,只能直接指定值。比如:

      let a = 1

      let b = 2

      let c = 3

    现在,ES6允许这样:

      let [a, b, c] = [1, 2, 3]

    或是这样:

      let {a, b, c} = {a: 1, b: 2, c: 3}

    上面三种方法的结果都是一样的;本质上,后两种通过解构赋值的写法属于“模式匹配”,只要判定了等号两边的模式相同(解构),左边的变量就会被赋予对应的值(赋值)

  (六)字符串的扩展方法

    1、includes("字符串",下标位置);查找指定的字符串是否在父串中包含,返回布尔值

    2、startsWith("字符串",下标位置);查找指定的字符串是否在父串的开头部分,返回布尔值

    3、endsWith("字符串",下标位置);查找指定的字符串是否在父串的结尾部分,返回布尔值

    注:includes和startsWith中第二个参数是从指定位置向后查找;endsWith中第二个参数是从指定位置(不包含)向前查找

    4、repeat();重复指定的字符串

      注:1)如果是小数,会自动向下取整

        2)字符串,可转先将字符串转为数字,不可转NaN为0;

        3)小于等于-1,报错;小于0大于-1取0

    5、``:模板字符串

      例:` ${变量名} `

  (七)箭头函数()=>{}

    1、唯一的好处:箭头函数中的this指向的是箭头函数所有作用域绑定的对象(this所在作用域的父级作用域绑定的对象)

  (八)Symbol():是ES6新增的第七种基本数据类型,特点是保证每一个变量中的值具有唯一性

    1、唯一的好处:可以解决原生对象中key被覆盖的问题

  (九)Set和Map结构

    1、Set集合,本质上就是对数组的一种包装;具有自动去除重复元素的特性

      1)如何创建set对象

        let set = new Set();

        let set = new Set([]);//里面为一维数组

      2)set属性:size:返回set对象的长度

      3)set的方法:

        a、add();添加元素

        b、delete();删除指定key的元素值

        c、has();判断指定元素是否在set对象中,返回布尔值

        d、clear();清空set对象

      4)遍历set对象:

        a、for of:for(变量 of 集合){}

        b、keys():获取set对象中所有的key

        c、values():获取set对象中所有的value

        d、entries():获取set对象中所有的key和value

        e、forEach(function(value,key,set){})

    2.map:解决原生JS对象中key是字符串的问题

      1)如何创建Map对象

        var map = new Map();

        var map = newMap([[]]);//里面为二维数组

      2)Map的属性

        size:返回map对象的长度

      3)map的方法

        a、set():添加元素

        b、get():获取元素

        c、delete():删除只能指定key的元素值

        d、has():判定指定元素是否在map对象中,返回布尔值

        e、clear():清空map对象

      4)遍历map对象

        a、for of:for(变量 of 集合){}

        b、keys():获取map对象中所有的key

        c、values():获取map对象中所有的value

        d、entries():获取map对象中所有的key和value

        e、forEach(function(value,key,set){})

  (十)数组去重

    1. var arr = [1,2,1,12,1,2,1,1,1,2,2,1,1];

      var set = [...new Set(arr)];

      console.log(set);

    //... : 扩展运算符

      var str = 'abcde';

      console.log([...str]);

  (十一)生成器函数

  (十二)class

    

  (十三)for in/for of

    区别:for in中的循环变量表示下标或key

       for of中的循环变量表示value或key

JS学习笔记Day15的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  3. JS 学习笔记--9---变量-作用域-内存相关

    JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...

  4. WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)

    WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...

  5. WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法

    WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...

  6. WebGL three.js学习笔记 创建three.js代码的基本框架

    WebGL学习----Three.js学习笔记(1) webgl介绍 WebGL是一种3D绘图协议,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的 ...

  7. vue.js 学习笔记3——TypeScript

    目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...

  8. 2019-4-29 js学习笔记

    js学习笔记一:js数据类型   1:基本数据类型       number类型(整数,小数)      String类型          boolean类型        NaN类型其实是一个nu ...

  9. 一点感悟:《Node.js学习笔记》star数突破1000+

    写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...

随机推荐

  1. Axure RP 8 注册码

    升级了8.1.0.3377版本后,需要使用下面这组注册码 许可:zdfans.com 重点:gP5uuK2gH + iIVO3YFZwoKyxAdHpXRGNnZWN8Obntqv7 ++ FF3pA ...

  2. ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

    今天在MySQL 5.6版本的数据库中修改InnoDB表字段长度时遇到了"ERROR 1071 (42000): Specified key was too long; max key le ...

  3. Redhat安装Oracle 11g (转)

    1.1     安装前准备 1.1.1     修改操作系统核心参数 在Root用户下执行以下步骤: 1.1.1.1 修改/etc/security/limits.conf文件 输入命令:vi /et ...

  4. Windows程序设计:格式化对话框的设计

    刚开始学习Windows程序设计,磕磕碰碰,先做个小笔记缓缓神经,主要是将MessageBox这个Windows API函数的. MessageBox函数是许多人刚开始学习Windows程序设计或者是 ...

  5. ORACLE跨数据库查询的方法

    原文地址:http://blog.csdn.net/huzhenwei/article/details/2533869 本文简述了通过创建database link实现Oracle跨数据库查询的方法 ...

  6. 关于vue-router中点击浏览器前进后退地址栏路由变了但是页面没跳转

    情景: 在进行正常页面跳转操作后(页面A跳转到页面B),点击浏览器的左上角的‘后退’按钮,点击后,可以看到url地址已经发生了变化(url由页面B变为页面A),hash值也已经是上一页的路由,但是浏览 ...

  7. Topshelf:一款非常好用的 Windows 服务开发框架

    背景 多数系统都会涉及到“后台服务”的开发,一般是为了调度一些自动执行的任务或从队列中消费一些消息,开发 windows service 有一点不爽的是:调试麻烦,当然你还需要知道 windows s ...

  8. 【vue】项目目录结构及使用多的知识点

    项目目录: Node_modules/npm安装的该项目的依赖库 vuex/文件夹存放的是和 Vuex store 相关的东西(state对象,actions,mutations) router/文件 ...

  9. python字符串replace失效问题

    python字符串replace替换无效 背景 今天想把一个列表中符合条件的元素中 替换部分字符串, 发现怎么替换,改元素还是没有改变,本以为是内存引用的问题后来发现并不然. 经查阅解决 在Pytho ...

  10. 迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库。

    Swifter.Json 这是迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库. Github : https://github.com/Dogwei/Swifter.Js ...