持续更新......
1. JavaScript基本数据类型
- undefined
- null
- boolean
- number
- string
- Symbol (es6)
2. null,undefined 的区别
- null 表示一个对象被定义了,值为“空值”;
- undefined 表示不存在这个值。
typeof undefined //"undefined"
undefined :是一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,但是还没有定义。当尝试读取时会返回 undefined;
例如变量被声明了,但没有赋值时,就等于undefined
typeof null //"object"
null : 是一个对象(空对象, 没有任何属性和方法);
例如作为函数的参数,表示该函数的参数不是对象;
3. JavaScript的基本规范
- 不要在同一行声明多个变量。
- 请使用 ===/!==来比较true/false或者数值
- 使用对象字面量替代new Array这种形式
- 不要使用全局函数。
- switch语句必须带有default分支
- 函数不应该有时候有返回值,有时候没有返回值。
- for循环必须使用大括号
- if语句必须使用大括号
- for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。
4. 数据模型
- 栈:原始数据类型(Undefined,Null,Boolean,Number、String)
- 堆:引用数据类型(对象、数组和函数)
两种类型的区别是:存储位置不同
- 原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
- 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;
引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
5. 移动端如何获取页面宽度。
document.documentElement.clientWidth
6. 写一个函数节流方法
throttle(method, context) {
clearTimeout(method.id);
method.id = setTimeout(function(){
method.call(context);
}, 100)
}
7. XHR对象的readyState属性有哪些?
- 0:未初始化。
open()
没有调用 - 1:启动。
open()
被调用,send()
还没被调用 - 2:发送。
send()
被调用,还未收到响应数据 - 3:接受。正在接收响应数据
- 4:完成。已经收到全部响应数据