js诡辩
{}+[] // 0[]+{} // [object Object]代码1的为0的原因是,解释器把开头检测到的{}当做了代码块出来,然后实际运行的是+[]。这种运行结果只在特定的情况下产生,运算时添加一个括号就是代码2的结果({}+[]) // [object Object] ({}+[]).length // 15
{}+[] // 0[]+{} // [object Object]代码1的为0的原因是,解释器把开头检测到的{}当做了代码块出来,然后实际运行的是+[]。这种运行结果只在特定的情况下产生,运算时添加一个括号就是代码2的结果({}+[]) // [object Object] ({}+[]).length // 15
关键词数组(Array) 索引 push() pop() unshift() shift() forEach() 回调函数 slice() splice() concat() reverse() sort()代码push() 向数组的末尾添加一个或者多个元素,并且返回数组新的长度pop() 删除数组最后一个元素,并且返回删除的元素unshift() 向数组的开头添加一个或者多个元素,并且返回数
关键词this 工厂方法 构造函数 instanceof 原型(prototype) 垃圾回收(GC)强调构造函数的执行流程this的情况向原型内添加方法可以防止污染垃圾回收机制使用hasOwnProperty()来检查自身是否有该属性,不包括原型上面的属性使用in 来检查自身是否有该属性,包括原型上面的属性也算instanceof用来检查某一对象是否为该类(构造函数)创建当我们在页面打印一个对象
({}+{}).length //30对象加对象会隐式转换,{}+{}的返回值是[object Object][object Object]参考文章:http://www.mabiji.com/javascript/object-length.html(function () {}).length //0(function(a,b,c,d){}).length //4返回的是形参的个数
>>关键词<<匿名函数 立即执行函数 方法 作用域(scope) 全局对象(window) 实体>>代码<<(function (){alert('ok');})()>>强调<<函数的参数可以是任意值,可以是对象,可以是函数使用var关键词声明变量,会使变量的声明提前不使用var定义的变量,为全局变量形参相当于在函数中定义了变
>>关键词<<函数 形参 实参 匿名函数 返回值