1. Javascript 有6种数据类型:(隐式转换就不说了,太简单了)
--5种原始类型:Number String Boolean Null Undefined
--1种对象类型:Object(array, function, Date ...)
2. Javascript 没有块级作用域
for (var i = 0; i < 10; i++){}; // i 定义括号里,定义在 block 里,和定义在 for 外边是一样的!!
但是有函数作用域
function foo(){ var a = 1; } // a 在 foo 函数外部是访问不到的
3. 函数声明 (function foo(){}) 和函数表达式( var foo = function (){} )的区别:
函数声明会被预先处理,即函数前置,可以在声明的前面直接调用函数
4. for in 谨慎使用,顺序不确定,对象属性受原型链影响
5. 对象创建: a. 对象字面量 b. new 原型链
var child = Object.create(obj) // 指在 child 对象的 原型上创建一个 obj 对象,即 child.prototype = obj
6. func.call/func.apply 可以改变 this 的指向, 他们的第一个参数就是你想要 this 是的对象,两个方法没有区别,无非 call 是一个一个传参,apply 是传一个参数数组。
还有一个 bind() 方法,func.bind(obj) 参数就是你想作为 this 的对象,比 call/apply 高效
7. 闭包的优点:灵活方便(参数传递),还可以用闭包来做封装
闭包的缺点:当函数被调用后无法释放其中的变量,所以不合理的闭包会产生空间浪费,甚至内存泄漏,性能消耗
网友评论