1.变量相关javascript
数据保存分为一次或屡次使用的变量,
若是屡次使用的变量则须要容器去存储,变量就是保存数据的容器java
2.数据类型web
js 中的数据类型分为 基本类型 与 引用类型
基本类型 :string ,boolean ,number ,null undefined
基本类型是不可修改的;
引用类型 :除去基本类型的数据 ,其余一切的对象都是引用类型;
基本对象 :上的方法与属性都是经过基本对象的包装对象去提供给基本对象去使用;数组
3.栈与堆简述浏览器
栈内存的大小是固定且有序的,堆内存是大小不固定且无须的;
栈内存的执行效率数倍与堆内存;
基本类型保存在栈内存中;
引用类型的索引地址保存在栈内存;函数
4.变量相等的比较spa
基本类型比较 : 进行直接比较 不一样类型的要转换为同一类型后比较;
引用类型比较 :要对引用类型的每一项进行对比;code
5.形参与实参regexp
基本类型参数 :至关于基本类型赋值因此函数体的形参与传递的实参是不一样的独立个体
引用类型参数 :至关于传递了对象的引用,因此操做对象是会引发函数体外部对象的更改!对象
6.检测数据类型
typeof 能够完美区分基本类型 可是不能区分对象, 数组 ,正则返回Object 有的部分浏览器 返回function
instanceof 能够区分引用类型, 不能区分基本类型, 基本类型和他的包装对象始终返回false
- 示例方法
/** * @function 判断对象类型 * @param obj 要获取类型对象其值能够为任意类型 * @param {String} type 可选参数,为预期的对象类型 * @return {String|Boolean} 若是传递一个参数则返回对象的对象类型字符串 ,传递两个参数则返回是否符合参数 type 预期的 Boolean 值 */ function getType(obj, type) { //判断若是只传递了对象,没有传递预期类型则默认返回对象类型字符串 if (arguments.length === 1) { return typeVal(obj); } return typeVal(obj) === type.toLowerCase(); //得到类型 function typeVal(obj) { var typeStr = typeof obj; if (typeStr !== 'object') { return typeStr; } if (obj instanceof Array) { return 'array' } if (obj instanceof RegExp) { return 'regexp' } if (!obj && typeof (obj) !== 'undefined' && obj != 0) { return 'null'; } return 'object' } }
7.变量的做用域
做用域分为:全局做用域,局部做用域[函数做用域];
js 函数中变量,在不是严格模式下,若是函数体内部不申明直接使用,会出现变量提高,自动转为全局做用域;
js 不存在块级做用域;
8:变量对象与做用域链
js 全部全局做用域中的全部属性,方法. 都是属于window; window就是最大的变量对象;
js 局部变量的变量对象,是用来被js引擎去使用的;
js 做用域链是由最小层逐步向最外层[浏览器上为window对象]查找,而不能反向查找
js 能够延长变量对象;例如 with方法
//不推荐使用 多处使用会形成做用域链混乱,不利于维护 //切不支持严格模式 with(obj){ obj.name='名称' }
9:js解析机制
预解析 --> 逐行解读代码
预解析 第一步读取全局属性 ,而且将全部全局属性 = undefined [查找变量申明词后的变量] ,而方法则会所有读取加载
第二步则是将全部局部做用域中的属性方法与全局的相同处理
[若是在预解析变量和函数同名冲突,则会抛弃变量;若是同名函数冲突,则已最后出现的为准];
[函数的参数也至关于局部变量,因此预解析也会去解析参数]
[js 预解析是分标签进行,分文件进行,每一个script标签都会独立预解析 ]
预解析完成后 -> js引擎才会开始逐行分析执行代码
10:内存相关
1.垃圾收集机制 GC
做用:释放无用的数据,回收内存
方式:通常分为主动回收,与手动回收机制
原理:找出无用数据,打上标记,释放其内存:周期性执行
标识无用数据的策略: 标记清楚 、 引用计数 [ js 采用标记清除来标识无用数据的策略 ]
[js 采用主动回收,无需手动去回收 ]2. 内存管理
系统分配内存 :桌面应用程序 > web浏览器
js释放内存,将全局变量值置为null ,解除引用,GC会在下一次执行是回收 [ 适用于绝大部分全局变量 ]
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">