1、变量提升
关于let、var和function:
let的「创建」过程被提升了,但是初始化没有提升。var的「创建」和「初始化」都被提升了。function的「创建」「初始化」和「赋值」都被提升了。
2、setTime事件执行机制
如果setTimeout加入队列的阻塞时间大于两个setTimeout执行的间隔时间,那么先加入任务队列的先执行,尽管它里面设置的时间可能比另一个setTimeout的要大
举个栗子:
//Time2
setTimeout(function(){ console.log(2); },400);
var start=new Date();
for (var i = 0;i<5000;i++)
{ console.log('这里只是模拟一个耗时操作'); };
var end=new Date();
console.log('阻塞耗时:'+Number(end-start)+'毫秒');
//Time1
setTimeout(function(){ console.log(3) },300);
结果:
这里只是模拟一个耗时操作
阻塞耗时:515毫秒
2
3
(如果阻塞时间大于两个setTimeout执行的间隔时间,则time2先执行)
3、类型
一元加号会尝试将boolean类型转换为数字类型。 true被转换为1,false被转换为0。
字符串'Lydia'是一个真值。 我们实际上要问的是“这个真值是假的吗?”。 这会返回false。
4、静态方法
静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。若子集对象向静态函数传值,会输出TypeError。