《你不知道的JavaScript下卷》知识点笔记
1.
[1, 2, 3] == [1, 2, 3] 返回false
[1, 2, 3] == “1, 2, 3” 返回true
2.
如果 < 比较的两个值都是字符串, 就像在b < c中那样,那么比较按照字典顺序(即字典中的字母表顺序)进行。如果其中 一边或两边都不是字符串,就像在a < b中那样,那么这两个值的类型都转换为数字,然 后进行普通的数字比较。
3.
var a = 42, b = “foo”;
a < b, a > b, a==b 全部返回false,因为foo被转为了NaN
4.
document.getElementById()看起来像是一个正常的js函数,但它其实是浏览器的DOM提供的指向内置方法的一个很薄的暴露接口
5.
alert是由浏览器提供给js程序的,而不是由js引擎本身提供
6.
js引擎在执行前(有时是执行中)就编译了代码
7.
function foo(…args) {
console.log(args);
}
foo(1,2,3,4,5); //[1,2,3,4,5]
8.
undefined意味着缺失,也就是说,undefined和缺失是无法区别的
9.
函数默认值可以不只是像31这样的简单值,他们可以是任意合法表达式,甚至是函数调用
eg: function foo(x = y + 4, z = bar(x)) {
console.log(x,z);
}
10.
var {x:ban} = bar() //是给ban变量附上bar中返回对象的x属性值
11.
解构是一个通用的赋值操作,不只是申明,变量可能是已经申明的,这样的话解构就只用于赋值
12.
特别对于对象解构形式来说,如果省略了var/let/const声明符,就必须把整个赋值表达式用()括起来,因为如果不这样做,语句左侧的{..}作为语句中的第一个元素就会被当作是一个块语句而不是一个对象。
13.
对象解构形式允许多次列出同一个源属性(持有值任意类型)
var {a: X, a:Y} = {a: 1};
X; // 1
Y; // 1
14.
解构也可以使用默认值
15.
es6中你需要定义一个与某个词法标识符同名的属性的话,可以把x: x简写为x
16.
es6对对象字面定义新增了一个语法,用来支持指定一个要计算的表达式,其结果作为属性名。
var o = {
[prefix + “foo”]: function(){}
}
17.
计算属性名最常见的用法可能就是和symbols共同使用
18.
要为已经存在的对象设定prototype,可以使用es6工具Object.setPrototypeOf(o2, o1);
18.
super只允许在简洁方法中出现,而不允许在普通函数表达式属性中出现,也只允许以super.XXX的形式(用于属性/方法访问)出现,而不能以super()的形式出现
19.
o2.foo() 方法中的 super 引用静态锁定到 o2,具体说是锁定到 o2 的 [[Prototype]]。基本 上这里的 super 就是 Object.getPrototypeOf(o2)——当然会决议到 o1——这是它如何找到 并调用 o1.foo() 的过程。
20.
更合理的做法是只在确实需要简短的在线函数表达式的时候才采用=>,而对于那些一般长度的函数则无需改变。
21.
在箭头函数内部,this不是动态的,而是词法的。他是从包围的作用域中词法继承而来的this
22.
大小端的意思是多字节数字中的低字节位于这个数字字节表示中的右侧还是左侧
23.
可以通过clear()清除整个map的内容,要得到map的长度(也就是键的个数),可以使用size属性(而不是length)
24.
要从map中删除一个元素,不要使用delete运算符,而是要使用delete()方法。
25.
获得一个map的所有键 var keys = […m.keys()];
获得一个map的所有值 var vals = […m.values()];
确定一个map中是否有给定的键,可以使用has方法
26.
map的本质是允许你把某些额外的信息(值)关联到一个对象(键)上,而无需把这个信息放入对象本身
27.
如果使用对象作为映射的键,这个对象后来被丢弃(所有的引用解除),试 图让垃圾回收(GC)回收其内存,那么 map 本身仍会保持其项目。你需要 从 map 中移除这个项目来支持 GC。
28.
WeakMap只接受对象作为键,这些对象是被弱持有的,也就是说如果对象本身被垃圾回收的话,在WeakMap中的这个项目也会被移除。
29.
WeakMap没有size属性或clear()方法,也不会暴露任何键、值或项目上的迭代器。
30.
set是一个值的集合,其中的值唯一(重复会被忽略)
31.
set的API和map类似。只是add()方法代替了set()方法,没有get()方法。
32.
set不需要get()是因为不会从集合中取一个值,而是使用has()测试一个值是否在。
33.
set的唯一性不允许强制转换,所以1和”1”被认为是不同的值
34.
如果你有一个回调函数需要传入的参数封装为数组,Array.of()可以完美解决这个需求
35.
远古时期类数组转数组的方法:
var arr = Array.prototype.slice.call(arrLike);
高科技方法:
var arr = Array.from(arrLike);
36.
fill()方法用指定值完全(或部分)填充已存在的数组,可选地接受参数start和end,它们指定了数组要填充的在子集位置。
37.
var points = [
{x: 10, y: 20},
{x: 20, y: 30},
{x: 30, y: 40},
{x: 40, y: 50}
]
points.findIndex(function matcher(point){
return (
point.x % 3 == 0 &&
point.y % 4 == 0
);
}); // 2,若没有匹配则返回-1
38.
Object.assign(target, srource…)可实现对象合并
39.
es6中判断NaN可以使用Number.isNaN()方法。
40.
JavaScript的数字值永远都是浮点数,所以确定数字是否为“整型”的概念并不是检查其类型,因为JavaScript并没有这样区分。
es6新增了一个辅助工具Number.isInteger()
41.
“foo”.repeat(3); // “foofoofoo”
42.
var abc = function(){}
abc.name; // “abc”
var abc = function haha(){}
abc.name; //“haha”
《你不知道的JavaScript下卷》知识点笔记的更多相关文章
- Vim 命令图解-Gvim使用笔记-2017-5-9
Vim 命令图解-Gvim使用笔记... 图片要是看的不太清楚推荐使用:鼠标右键在新标签中打开或是全屏看图 Vim中常用的一些速查命令: Vim发展历史:1976年Bill Joy开发了vi1988 ...
- Vim 命令图解-Gvim使用笔记
Vim 命令图解-Gvim使用笔记... 参考的网址:http://blog.vgod.tw/wp-content/uploads/2014/08/vgod-vim-cheat-sheet-full. ...
- Python 入门必学经典知识点笔记【肯定有你不知道的】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- Java 多线程与并发【知识点笔记】
Java 多线程与并发[知识点笔记] Java多线程与并发 先说一下线程与进程的由来: 在初期的计算机,计算机只能串行执行任务,并且需要长时间的等待用户的输入才行 到了后来,出现了批处理,可以预先将用 ...
- 《图解http》知识点笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...
- 图解HTTP学习笔记
前言: 一直觉得自己在HTTP基础方面都是处于知其然,不知其所以然的样子.最近利用空闲时间拜读了一下图解HTTP,写篇博客记录一下读书笔记. TCP三次握手: ① 发送端首先发送一个带SYN标志的数据 ...
- 图解http学习笔记【一】
不想单纯的把书里的知识点罗列一遍 这周,我们的安全代码终于改完了.我在微信上报了个叫 一修读书的课程,现在已经听了6天.感觉并不是很神奇,聊胜于无.倒是趁着当当搞活动买回来好几本书,其中就有这本图解h ...
- 图解HTTP学习笔记——简单的HTTP协议
简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地 ...
- 图解http读书笔记
以前对HTTP协议一知半解,一直不清楚前端需要对于HTTP了解到什么程度,知道接触的东西多了,对于性能优化.服务端的配合和学习中也渐渐了解到了HTTP基础的重要性,看了一些大神对HTTP书籍的推荐,也 ...
随机推荐
- debian的pdf阅读器
www.foxitsoftware.cn下载deb包 或者 sudo apt-get install evince
- 大数据挖掘算法篇之K-Means实例
一.引言 K-Means算法是聚类算法中,应用最为广泛的一种.本文基于欧几里得距离公式:d = sqrt((x1-x2)^+(y1-y2)^)计算二维向量间的距离,作为聚类划分的依据,输入数据为二维数 ...
- 9.MVC模式 -- 改造源代码
一.MVC设计模式 软件可以认为有 Model View Controller 来组成 MVC设计模式 要求这三部分 应该尽量独立 互不干扰 使程序结构清晰 便于开发和维护 二.JAVAEE经典三层 ...
- 分布式开放消息系统RocketMQ的原理与实践(消息的顺序问题、重复问题、可靠消息/事务消息)
备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念 分布式消息系统作为实现分布式系统可扩展 ...
- SonarQube
代码质量管理 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不 ...
- 【转载】Docker 经验之谈
本文来源:Ghostcloud原创 对于用户来说,可能一开始在不了解的情况下会对容器报以拒绝的态度,但是在尝到容器的甜头.体验到它的强大性能之后,相信大家最终是无法抵挡其魅力的.容器技术能够解 ...
- tensorflow入门资料
google出的说明文档 tensorflow_manual_cn.pdf google出的视频 https://www.zhihu.com/question/41667903/answer/1306 ...
- C++并发编程 02 数据共享
在<C++并发编程实战>这本书中第3章主要将的是多线程之间的数据共享同步问题.在多线程之间需要进行数据同步的主要是条件竞争. 1 std::lock_guard<std::mute ...
- 【Python编程:从入门到实践】chapter2 变量和简单数据类型
2.1 运行2.2 变量 message = "hello" print(message) 2.2.1 变量的命名和使用 2.2.2 使用变量是避免命名错误2.3 字符串 “Hel ...
- pip安装包(python安装gevent(win))
下载: https://www.lfd.uci.edu/~gohlke/pythonlibs/#greenlet greenlet greenlet-0.4.14-cp36-cp36m-win_amd ...