jscode 简单总结

1.作用域

1.全局作用域

1.脚本中通用

2.顶级对象

window

1.浏览器默认提供的对象类型,其中存储系统级的API代码

2.全局污染,如果把自定义变量存储在window对象里,就属于污染

  • 方案一 ———在局部作用域 ,匿名函数自调用形成的作用域中声明变量
  • 方案二 ———ES6中退出let/const这两种鑫的声明变量的方案,带来新的顶级对象,带来新的顶级对象,脚本对象:用于存储自定义对象

3.宿主环境

JS代码运行是所在的平台

  • Node.js
  • 浏览器

2.局部作用域

1.函数调用时诞生的作用域

2.作用域链

当前作用域中使用一个变量时,如果自身没有,则到上层作用域中查找

3.闭包losure

1.函数在声明时,会检查自身使用的到变量从何而来,如果来自外部作用域,会自动把这个外部作用域保存在自身的csopes属性里,防止其释放

2. 闭包,被保存到scopes中的函数作用域成为闭包,可以认为是对于这种状态的描述

3. 闭包的问题,占据更多的内存,以为保存了而不再自动释放

4.

使用场景: 私有属性 var 函数名 = (function(){ var _私有属性 = 值 return function(){ 使用私有属性 } })()

ES6中提供了块级作用域, 利用块级作用域可以更容易的实现私有属性 { let _私有属性= 值 const _私有属性 = 值 function(){ 使用 私有属性 } }

2. 块级作用域

ES6中新增的作用域和函数的局部作用域类似,由let/const搭配 { } 而来

目的是代替匿名函数自调用产生的局部作用域做法:因为块级的实现方式更简单

3.模块

Node.js中

2.函数

1.arguments

  • 保存接受到的所有实参
  • 属于类数组类型,属性结构和数组对象相同,但是原型不是数组
  • 遍历方案:使用for ··of或利用Object.setPrototypeOf修改器原型为数组
  • 应用:

参数数量不固定的函数

函数重载:根据实参的个数或类型不同,执行不同的逻辑操作

2.this

  • function场景

--对象.函数():对象

--函数():window;严格模式下是undefined

--new函数():示例对象

  • 箭头函数:没有this,按照作用连原则 到上层查找使用

3. 触发函数的3种方式

  • call:临时修改函数中的this指向,并执行
  • apply:把数组改为参数列表形式,触发函数
  • bind:把参数和对象与函数绑定在一起,返回新的函数,简化后续的调用

2.构造函数

1.用于创建对象的函数

2.new辅助构造函数使用

隐式完成3行代码 - this = {} - this.__proto__ = 构造函数.prototype - return this

3.原型

  • 解决问题:节省内存,提升性能
  • 做法:把公共的方法存储在构造哈数的prototype中,实现共享
  • 原型链机制:当读取对象属性时,如果对象自身没有,则其到__proto__中查找使用
  • 对象__proto__==构造函数.prototype孩子.父亲==母亲.丈夫

4.class语法

  • ES6退出的,模仿Java的语法

class 类名{ constructor(){ } 方法名(){} }

3.ES5

2009年推出的JS第五个版本

  • 新增严格模式
  • 使用‘use strict’开启
  • 提供更多的报错提示,强制程序员书写健康的代码

4.ES6

1.2015年推出的JS第六个版本

此版本属于里程碑角色的版本,引入大量的易用新特性,通常统称2015年之后推出的所有新特性ES6+

2.let/const

  • 新增的声明变量的方案
  • 带来新的顶级全局对象 ——脚本对象,存储自定义全局对象,避免全局污染
  • 跨级作用域
  • const:常量,声明时必须赋值,后续不可修改,更加安全可靠
  • 声明提升:有提升 但存在暂存区设定,在声明行代码执行前不可修改

3.模板字符串

用反引号声明`` 支持换行 更好的字符串拼接方案:${}

4.箭头函数

  • 更简单的匿名函数写法,带有语法糖
  • 语法糖:

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

——方法体仅有一行,省略{return}

  • this

5.数组遍历

for··of:适合数组和类数组,比如arguments

6.展开语法

...可以把数组/对象中的值抽取出来

在搭配函数使用时,待敌之前apply方法的作用

7.剩余参数rest

 

...形参

形参将会是数组类型,接受没有形参的所有传入的实参

8.展开语法

  • 数组的展开语法 var[变量,变量,变量]=数组
  • 对象的展开语法 var{属性名,属性名:别名}=对象

5.数组高阶函数

  • every:每一个元素都满足条件
  • some:至少一个元素满足条件
  • filter:把满足条件的元素过滤出来
  • map:映射,把元素处理后的值 组合成新的数组
  • forEach:数组具有的遍历语法
  • reduce:合并

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值