1.undefined:声明未赋值,访问对象不存在的属性,有行参无实参,使用void定义变量。(原始值,没有认为改动)
null:空值,在内存里表示就是栈中的变量没有指向堆中的内存对象。typeof –>object
undefined==null//true,undefined===null//false ,number(null)//0,number(undefined)//nan
2.静态内存:编译时,大小已知,编译时执行,在栈中申请,后进先出
动态内存:编译时大小未知,在运行时执行,堆中申请,无明确分配顺序
3.内存泄漏:全局变量;被遗忘的定时器或者回调;闭包;超出DOM引用
4.var 函数范围变量或者全局范围,没有块级范围;let声明的变量是块级范围的,但没有变量提升
5.this绑定四种规则:默认绑定全局变量;隐式绑定;显示绑定;new对象绑定
6.即所有可执行代码执行完毕之后,才会开始执行由setTimeout定义的操作。而这些操作进入队列的顺序,则由设定的延迟时间来决定。使我们将延迟时间设置为0,它定义的操作仍然需要等待所有代码执行完毕之后才开始执行。这里的延迟时间,并非相对于setTimeout执行这一刻,而是相对于其他代码执行完毕这一刻。
7.跨域解决方案
1、 通过jsonp跨域
2、 document.domain + iframe跨域
3、 location.hash + iframe
4、 window.name + iframe跨域
5、 postMessage跨域
6、 跨域资源共享(CORS)
7、 nginx代理跨域
8、 nodejs中间件代理跨域
9、 WebSocket协议跨域