今天来对this
这个JavaScript中很重要,有时候也会让很多人绕晕的关键字做一个总结。首先我们得明白this
既不指向函数自身也不指向函数的词法作用域,它实际上是在函数被调用时发生的绑定,指向哪里完全取决于函数在哪里被调用。
《ES6总结之解构赋值》
ES6中新增了变量的解构
赋值语法,在一些新的框架内,我们可能很容易就看到解构的应用,语义简洁明了,方便我们将数组或者对象属性进行结构化的赋值,以前看到这样的代码,总有点云里雾里的感觉,这两天抽了点时间,将这个小知识点做了一个总结,以后会尽量尝试使用解构
语法来书写代码。
《ES6总结之Generator与Iterator下》
上篇博客归纳总结了一些关于Generator
生成器的知识点,这些天又查阅了许多资料和书籍,包括《你不知道的JavaScript》及阮一峰老师写的《ECMAScript 6 入门》,着重理解和思考了关于Iterator
迭代器的知识点,总结于此,方便以后查阅。
《ES6总结之Generator与Iterator上》
在ES6之前,JavaSript中默认来讲,一个函数一旦开始执行,就会一直运行到函数结束,期间不会有其他代码能够打断它并插入其间。虽然JavaScript是单线程运行,但是如果如果有多个函数“并行”运行,基于运行环境的复杂性及函数异步同步问题,相同的代码在多次运行中可能会出现不同的运行顺序,导致运行结果的不确定。这种函数的不确定性就是通常所说的竞态条件,两个函数相互竞争,看谁先运行。好在ES6为我们带来了Generator
和Iterator
,也就是所谓的生成器和迭代器(遍历器),使我们能够实现函数的启停控制,遍历数据等等新的操作。
宽松相等和严格相等
上次总结了一些强制类型转换的问题,今天来讲一讲与之相关的一个知识点:宽松相等和严格相等。
一般说法是“==
检查值是否相等,===
检查值和类型是否相等”,这个说法咋一听没有问题,但是还不够严谨,正确的解释应该是:“==
允许在相等比较中进行强制类型转换,而===
不允许”。
强制类型转换
今天来谈谈JavaScript中的强化类型转换。
将值从一种类型转换为另一种类型通常称为类型转换
,这是显式情况,隐式的情况称为强制类型转换
。这里再将强制类型转换
区分为显式强制类型转换
和隐式强制类型转换
。当然这个区分是相对而言的。