资讯专栏INFORMATION COLUMN

JavaScript 语言核心笔记(持续更新)

suosuopuo / 1257人阅读

摘要:在同一个块内,不允许用重复声明变量。中为新增了块级作用域。自带遍历器的对象有数组字符串类数组对象对象的对象等和结构对象。返回一个遍历器,使遍历数组的键值对键名键值。

目录 1.语法 2.类型、值和变量 3.表达式和运算符 4.语句 5.数组 6.对象 7.函数 8.全局属性和方法 9.词法作用域、作用域链、闭包 10.原型链、继承机制 11.this的理解 12.ES5新特性 13.ES6 内容 1.语法 2.类型、值和变量 3.表达式和运算符

typeof和instanceof

运算符优先级

4.语句 5.数组 6.对象

Object类方法和对象实例方法

Number、Date、 Math对象

7.函数

js构造函数

8.全局属性和方法

JS全局函数,Number方法、Math、Date

9.词法作用域、作用域链、闭包

理解词法作用域、作用域链、闭包。

10.原型链、继承机制

js继承机制,模拟类继承的方式(原型链)

11.this的理解 12.ES5新特性 13.ES6

箭头函数用法和普通函数有哪些区别,什么时候用比较好?

    首先,形式上不同,表达更简洁;一个用处就是,简化回调函数。

let const声明符和var的区别,块级作用域的理解

    let声明的变量只在代码块内有效。
    var命令会发生变量提升的现象,即变量可以在声明之前使用,值为undefined;而let不会;暂时性死区(temporal dead zone, TDZ)在let声明变量之前,该变量都不可用。
    在同一个块内,不允许用let重复声明变量。
    const和let基本相同,除了const声明的变量的指针不能改变。

    块级作用域
    ES5中只有全局作用域和函数作用域;这样可能造成不便,如内层变量可能覆盖外层变量,用来计数的循环变量泄露为全局变量。
    ES6中let为js新增了块级作用域。
    外层作用域无法读取内层作用域的变量;内层作用域可以定义外层作用域的同名变量;块级作用域的出现可以使立即执行函数表达式不再必要了。

模板字符串,什么时候用

    单纯的模板字符串还存在着很多的局限性。如:

    1.不能自动转义特殊的字符串。(这样很容易引起注入攻击)
    2.不能很好的和国际化库配合(即不会格式化特定语言的数字,日期,文字等)
    3.没有内建循环语法,(甚至连条件语句都不支持, 只可以使用模板套构的方法)

    “标签模板”
    过滤HTML字符串,防止用户输入恶意内容。

set和map类型对象

模块import和export

    单个模块输出:export 变量定义/函数定义等
    单个模块输入:import {需要的变量名,函数名} from 某个文件
    整体导入: module 新的对象名 from 某个文件 (这时,文件中定义的变量和函数都是对象的属性和方法)
    
    以默认方式输出: export default 变量啊方法啊对象啊什么的
    然后引入: import 新名字 from 某个文件 (这个新名字就是默认的变量啊方法啊对象啊什么的引用) 

class和使用构造函数模拟“类”的区别

promise的理解

for...of

    只有部署了iterator接口的对象才可以使用for...of循环遍历。
    自带遍历器的对象有数组、字符串、类数组对象(argument对象、DOM的NodeList对象等)、set和map结构、Generator对象。
    普通对象不可以。
    for...of是对键值的遍历,而for...in是对键名的直接遍历。

es6新增的字符串方法

    includes() startsWidth() endsWidth()
    都返布尔值,可传入第二个参数,起始位置,includes和startsWidth从指定位置往后查找,endsWidth往前找
    repeat() 参数是重复几次,返回重复后的字符串
  

es6新增的Number、Math方法

    Number.isFinite() Number.isNaN()
    与ES5的全局方法isFinite()和isNaN()不同的是,不会对非数值转换为数组类型,再判断;对非数值全部返回false
    Number.parseInt() Number.parseFloat() 与相应全局方法一样,只不过放在了Number下,使模块化
    Number.isInteger() Number.isSafeInteger()
    Number.MAX_SAFE_INTEGER  Number.MIN_SAFE_INTEGER
    
    Math.trunc() 去除一个数的小数部分,直接去掉,返回整数部分
    

es6数组的扩展

    Arry.from() 将类数组对象或者可遍历对象转化成数组,Set结构
    Arry.of() 
    参数是一组数,将它们作为一个数组的元素返回数组。
    与构造函数Array()的区别:Array()会因为参数的个数不同而不同,参数是一个时,返回含参数个元素为undefined的数组
    
    find() findIndex() 
    参数是一个回调函数,返回第一个匹配的元素或其下标。都可以发现NaN,弥补了IndexOf()的不足
    
    fill() 用第一个参数填充数组,用可选的第一第二个参数指定填充的开始位置和结束位置。
    entries() keys() values() 返回一个遍历器,使for...of遍历数组的键值对、键名、键值。
    
    数组推导
    直接在方括号中使用for...of和if语句等对原有数组操作返回新的数组,与map()和filter()功能类似。
    也可以对字符串进行处理。
    
    Array.observe() Array.unobserve()
    

*es6对象的扩展

    方法Object.is(),与严格相等类似,但是区分-0 +0 NaN不同
        +0 === -0 //true
        NaN === NaN //false
        Object.is(-0, +0) //false
        Object.is(NaN, NaN) //true
    Object.assign() 参数是一个目标对象,一个或多个源对象
    _proto_读取或者设置对象的prototype对象,以前用Object.create()。
    Object.setPrototypeOf() Object.getPrototypeOf()
    增强的对象写法:直接写入变量和函数
    比如: var x = 1; var a = {x, hello(){console.log(x)}};
    属性名表达式: 用表达式作为对象的属性名。
    比如: var zhanglu = "zhoushen"; var b = {[zhanglu], [zhanglu+ "hahaha"]}
    
    

Set

    类似于数组的新的数据结构,但是成员值都是唯一的,没有重复的值。
    定义var s = new Set();
    参数是一个数组,用Array.from()可以转化成数组。(数组去重的好方法~)
    方法:add() delete() has() clear()
    属性:Set.prototype.size

generator(超难了解即可)

es6目前如何使用(有些可以直接用,其他的如何用)

列几个es7特性(只需列出,不必学习)

数组、对象的解构赋值

    “模式匹配”。
    只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值。
    允许有默认值,也可以引用解构赋值的其他变量,但该变量必须已经声明。
    数组的元素有次序,变量按次序取值;而对象属性没有次序,变量名必须和属性名相同才能取到值。
    数组和对象都可以用于嵌套结构的对象。
    用途:

阮一峰 ES6-解构的用途

rest参数使用方法

    用于获取函数多余参数,rest参数中的变量是个数组,该变量将多余的参数放入数组。
    rest参数之后不能再有其他参数。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84360.html

相关文章

  • ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.5

    摘要:请回复这个帖子并注明组织个人信息来申请加入。版笔记等到中文字幕翻译完毕后再整理。数量超过个,在所有组织中排名前。网站日超过,排名的峰值为。主页归档社区自媒体平台微博知乎专栏公众号博客园简书合作侵权,请联系请抄送一份到赞助我们 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1...

    zhonghanwen 评论0 收藏0
  • ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.6

    摘要:请回复这个帖子并注明组织个人信息来申请加入。权限分配灵活,能者居之。数量超过个,在所有组织中排名前。网站日超过,排名的峰值为。导航归档社区自媒体平台微博知乎专栏公众号博客园简书合作侵权,请联系请抄送一份到赞助我们 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...

    Bmob 评论0 收藏0
  • 程序员写简历时的技术词汇拼写规范备忘录!

    摘要:写在前面每年这个时候又到了求职的旺季。求职前,我们都会花很多的时间在自己的技术水平提升笔面试的准备之上,但往往却忽略了找工作第一步所需要的一个严谨且靠谱的简历。而程序员写简历,第一步就是需要注意严谨而规范地使用各种技术词汇。 ...

    h9911 评论0 收藏0
  • Kubernetes学习笔记持续更新

    摘要:常用命令服务启动滚动升级概念集群分布式存储保存了整个集群的状态控制节点控制节点负责整个集群的管理,例如容器调度资源状态维护自动扩展滚动更新等服务节点服务节点是真正运行容器 1.常用命令 服务启动 [root@k8s-master ~]# systemctl start etcd [root@k8s-master ~]# systemctl start docker [root@k8s-...

    XBaron 评论0 收藏0
  • 网易微专业之《前端开发工程师》学习笔记(1)

    摘要:点击此处了解网易微专业课程前段时间报名参加了网易云课堂微专业课程前端开发工程师,这周课程开始了,正式学习。以下内容为前端开发工程师微专业的第一门课网页制作的课程学习指南,学习视频课程后自己整理的学习笔记,会持续更新内容。 何为网易微专业? 微专业是由网易云课堂联合各领域知名专家,以就业为导向,精心打造的职业培训方案。按要求完成学习,考试通过可获得专业认定证书,令你求职或加薪多一份独特优...

    geekzhou 评论0 收藏0

发表评论

0条评论

suosuopuo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<