正文
图片切片,组合成一张大图
用 CDN 加速
问题地址:https://segmentfault.com/q/10...
5.([] + {}).length ?
[] + {} 运算,首先是调用对象的 valueOf 方法,如果返回一个基本类型,则以该基本类型参与运算;否则调用 toString 方法,返回基本类型则参与运算。
数组和对象的 valueOf(默认)返回自身,因此不是基本类型,接着调用 toString,空数组返回空字符串,普通对象始终返回字符串 [object Object]。故视为两个字符串的拼接,结果为字符串 [object Object],其长度为 15。
一个例外是 Date 的实例,其实例首先调用 toString ,接着才调用valueOf。
可以这样验证:
([]).toString() // ""
({}).toString() // "[object Object]"
([]+{}) // "[object Object]"
问题地址:https://segmentfault.com/q/10...
6.js对Date对象的操作的问题
使用JavaScript生成一个倒数7天的数组。
比如今天是10月1号,生成的数组是["9月25号","9月26号","9月27号","9月28号","9月29号","9月30号","10月1号"]。
Date 的 setDate() 可以给 0 和负数作为参数,日期会自动计算
var today = new Date();
var dates = [today];
for (var i = 1; i < 7; i++) {
var d = new Date(today);
d.setDate(d.getDate() - i);
dates.unshift(d);
}
console.log(dates);
[Fri Sep 25 2015 09:58:23 GMT+0800 (中国标准时间),
Sat Sep 26 2015 09:58:23 GMT+0800 (中国标准时间),
Sun Sep 27 2015 09:58:23 GMT+0800 (中国标准时间),
Mon Sep 28 2015 09:58:23 GMT+0800 (中国标准时间),
Tue Sep 29 2015 09:58:23 GMT+0800 (中国标准时间),
Wed Sep 30 2015 09:58:23 GMT+0800 (中国标准时间),
Thu Oct 01 2015 09:58:23 GMT+0800 (中国标准时间)]
如果要取得格式化后的日期
var today = new Date();
var dates = [today];
for (var i = 1; i < 7; i++) {
var d = new Date(today);
d.setDate(d.getDate() - i);
dates.unshift(d);
}
dates = dates.map(function(d) {
return (d.getMonth() + 1) + "月" + d.getDate() + "日";
});
console.log(dates);
结果:
["9月25日",
"9月26日",
"9月27日",
"9月28日",
"9月29日",
"9月30日",
"10月1日"]
问题地址:https://segmentfault.com/q/10...
7.用闭包保存状态
和普通function执行的时候传参数一样,自执行的函数表达式也可以这么传参,因为闭包直接可以引用传入的这些参数,利用这些被lock住的传入参数,自执行函数表达式可以有效地保存状态。