已采纳回答 / Bosn
一个完整的语句,如果以{开头,就会被理解为block(块)也就是说:{} + []直接这样写,等于被拆分为:{} // 这是空块被忽略+[] // 这是最后返回的值因此直接在控制台输入返回的是+[](空数组转数字)也就是0.而如果换种写法:var n = {} + []; // 此时 {} 不再是块,而是空对象字面量。这时会尝试转字符串,即[object Object],而空数组转换为字符串就是空串,所以最终返回[object Object].
2015-03-28
讲师回答 / Bosn
fo.call("hello"); 这样用call去调用foo,目的就是修改fo函数内的this。由于使用call/apply时(一般非严格模式下)会进行基本类型到包装类型的转换,所以fo中的this实际上是new String("hello"); 是一个String对象...
2015-03-27
已采纳回答 / Bosn
这就是稀疏数组啊,例如:var arr = [];arr[99] = 1;99 in arr; // true98 in arr; // false虽然通过arr[99]使得数组长度变为100,但JavaScript并不会自动创建从0 ~ 98的其它Key。这就是稀疏数组。
2015-03-25