Javacript
Numbers
a = 0.1; b = 0.2; c = 0.3; (a + b) + c === a + (b + c) //false
请说出下面运算式的结果
5 / 5 5 / "5" 5 / "5a" 5 / "NaN"
parseInt("08") === 0 // ie 8如何处理这种情况Array
删除数组中的第二项
var arr = ['a','b','c','d']; arr ==> ['a','c', 'd'] delete arr[1] // 为什么这样用是错误的 arr.splice(1,1) //正确方法
如何检测 一个对象是不是数组呢
var arr = ['a','b'] typeof arr === 'object', typeof null === 'object' $.type(arr) //jQuery Array.isArray(arr) //es5 Object.prototype.toString.call(arr) === '[object Array]'; //es3
Boolean
!!会把一个对象变成布尔值
!!false !!null !!undefined !!"" !!0 !!NaN //上面的都是 false !!"0" //true !!"false" //true !!{} //true //实际使用情况 function myfunc(config){ if(config){ ... } }arguments 对象
//解释一下 arguments 对象 (存在于function中的) //是一个 类似 数组的对象, 没有slice splice 等方法 arguments.length //有length属性
调用function的四种形式
func() //直接调用 new func() //实例化 myfunc.func() //类似方法的调用 func.apply(this,'1') //用 apply或者 call指定 this调用
闭包
IIFE
//IIFE = Immediately-Invoked Function expression. //写一个 IIFE // good var task = (function () { // Code return result; })(); var task = (function(){ //Code return result; }()) //上面两种都是可以的 //一个闭包的例子 define(function(require,exports,module){ var token = '12345'; module.exports = { checkToken: function(tkNew){ return tkNew === token; } } }) //定义一个私有变量token,检测 token是否合法,seajsprorotype原形继承
var Vm= function(id){ this. id = id;}Vm.prototype.getGame = function(){ return $.ajax ...}//写一个Vm1 继承Vmvar Vm1 = function(id,name){ this.name = name;}Vm1.prototype = new Vm('123'); //或者var Vm1 = function(id,name){ this.name = name;}Vm1.prototype = Object.create(Vm);请写出一个函数 可以这样执行:calc(3)(2) //计算结果是5
var calc = function (a){ return function(b){ return a + b; } }请写出一个函数 可以这样执行:assertPlus(3,2)(5) //(如果 3+2 === 5 ,返回 true,否则返回 false)
function assertPlus(a ,b){ return function(c){ return c === a + b; } }


