JSCORE day_04(7.5)

复习

  • yi 对象的精确配置:

    • 高级的知识点: 可以精确的配置对象的属性

    • configurable: 可重新配置

    • writable: 可写入新的值

    • enumerable: 可遍历 -- for...in

    • value: 值

    • get: 计算属性. 属性的值是函数, 使用时不需要() 就自动触发

    • set: 监听器. 属性变为函数, 接收赋值操作传入的值, 进行检测

      • 满足: 存储 制作的用于存储数据的属性, 名字通常是 _???

      • 不满足: 报错

  • 保护对象方式

    • 阻止增: preventExtensions

    • 阻止增删: seal

    • 阻止增删改: freeze

  • 箭头函数: 更方便的匿名函数格式

    • 语法糖:

      • 形参只有一个, ()省略

      • 函数体只有一行, 可以省略 return 和 {}

    • this指向:

      • 没有this, 用上级作用域的this--原型链机制

  • 模板字符串

    • ES6新增的字符串增强语法

    • 优化了字符串拼接: ${}

    • 支持换行: 主要应对 HTML的多行代码

  • 数组高阶函数: 高阶-函数中使用了其他函数

    • every: 每一个都满足

    • some: 至少一个满足

    • filter: 把满足条件的过滤出来

    • map: 映射--把数组元素处理后的返回值, 组成新的数组

一、高阶函数forEach

关于遍历数组,现在至少有四种

 传统方案 : for循环

 for...in: 遍历对象类型的通用方案; 数组是一个特殊的对象

  ES6: 提供了 for..of 专门为遍历数组而来,与for..in区别是它直接遍历值, 没有序号

  ES6: 提供数组的高阶函数forEach,注意: 区别其他高阶函数, 其没有返回值, 仅仅是遍历

 应用forEach的一个案例

 二、reduce

传统方式

 reduce方式

 reduce: 数组元素合并,注意参数代表的意义

 三、let与const

 

 ES6之前, 声明变量只有 var 和 function,存在全局污染风险: 在脚本中直接声明会出现在 window 对象里;ES6中提供 let 和 const 关键词。

1. 声明的变量存储在 脚本作用域 (全新的作用域),脚本作用域必须用断点技巧查看。

 2. let声明可变化的;const声明常量: 声明后不可变化-更安全,效率更高。

   案例: 根据情况选择用什么声明?
   大明的薪资 salary  -- 预判后期可能变化;大明的妻子 wife  -- 预期后续不变化 

理论上的优先级:  const > let  不用var

 3. 关于声明提升(面试题.重点)
const和let都有声明提升,但是存在“暂存死区”的设定。首先,声明提升不是一个好的设计, 所以作者要做修改;但是,声明提升根深蒂固, 直接修改其源码影响范围过大;所以作者提供了报错, 必须先声明再使用,否则后台爆红。
let/const 变量, 在声明代码执行前, 称为 暂存死区 状态-- 暂时提升, 但是 死的状态, 不允许用.  只有在声明代码执行后才能用

   

 四、块级

块级作用域: 用于代替闭包

闭包: 用匿名函数制造一个函数作用域, 在其中声明变量 给其他函数用

块级: 用 {} 配合 let/const 使用

 ES6之前是使用闭包

 有一些语法自带{}, 都可以形成块级, 来避免全局污染for  if while switch 都是自带块级
    误区: 函数{}  函数作用域
    对象{}:  虽然有{} 但是没有写 let 的语法

 五、展开语法:...

合并两个数组使用 “ ... ” 去掉数组的外层[ ]

 应用场景,比如说在使用max函数时,它只接受 一个一个传入的数字做参数, 不接受数组,查找一个数组中的最大值,就用到展开语法。

 同样的,对象也可以使用展开语法,但是遇到同名属性, 后写的会覆盖先写的。

六、解构

可选解构: 就要第一个 和 最后一个

当我们把数组中的元素存储在 a b c d 四个变量里,使用解构语法方便很多,不必每一个元素写一条代码。

灵活应用场景: 互换的变量的值,原来我们还需要定义另一个变量储存数据,但现在不需要了。但值得注意的是,声明变量后需要用分号将解构语法的代码隔开,防止打印输出前面赋给变量的值。

当我们需要把对象中的属性读取出来,解构出两个属性,还可以使用别名语法: 把解构出来的属性 换个名,格式---- “属性名:别名”。

 在实战中: 请求的数据通常是 对象 掺杂数组的结构,同样可以解构出来。

 数组也能解构

参数解构

 

js转 html+参数解构

 七、参数默认值

 ES6 函数增强语法: 参数默认值。当没有传递实参, 则采用形参的默认值;当传递实参, 则使用传入的值 代替默认值。

 八、函数的剩余参数

 剩余参数:  比 arguments 更加强大 和灵活

  arguments: 接收并存储所有的实参
    缺点1: 隐式,  有的程序员不知道arguments的存在
    缺点2: 伪数组类型, 没有数组的相关方法

  ES6新语法:  用  ...变量名  显式声明参数, 接收所有的实参
     此...和 之前的展开符... 没有任何关系, 只是外观相同

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值