b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

接口安全调用 给初学者:JavaScript 的常见注意点(3)

电脑杂谈  发布时间:2018-02-22 06:19:23  来源:网络整理

简言之:

x == null // 或 x == undefined

是最简单的判断 x 为 null 或 undefined 的方式,相对应的

x != null // 或 x != undefined

是最简单的判断 x 非 null 和 undefined 的方式。这就是 ==存在的唯一意义。

日期处理 new Date(year, month, day) 注意其参数的数值范围

由于可能的历史传承原因,JS 内置对象 Date 的构造函数比较特殊。

如果 year 是 0 ~ 99 之间,year 默认加 1900。比如 1 代表公元 1901 年,99 代表公元 1999 年,100 代表公元 100 年。(你问 -1 是几?公元前 1 年。。。)

month 从 0 开始算。0 代表一月,1 代表二月,以此类推。12 代表下一年的一月(自动进位)

第一点不知道也没什么,毕竟一般不会操作公元 99 年之前的时间。但第二点就很容易出错,切记它是以 0 开始的数字。

这样得到的日期对象是本地时间(采用客户端时区)

new Date(dateString) 注意浏览器时区问题以及浏览器兼容性

时常有后端接口返回一个日期字符串的情况:

new Date('2018-01-01') // => "2018/1/1 08:00:00" 新版浏览器,IE 11

new Date('2018-01-01') // => "2018/1/1 00:00:00" 某些旧版安卓

new Date('2018-01-01') // => "Invalid Date" IE 8(这个忽略。。。)

可以看到,浏览器基本都是把日期字符串当做 UTC 时间处理的。而

new Date('2018/01/01') // => "2018/1/1 00:00:00" 包括 IE 8 在内所有浏览器

所以对于日期字符串,请注意字符串中是使用横杠还是斜杠。对于横杠可以考虑将 -替换成 /,或者补全完整的带时区的 ISO8601 字符串。接口安全调用考虑到负数时区的问题,不推荐将小时数清零的做法。

PS:将日期对象取当天 0 点为 date.setHours(0,0,0,0)PS2:取当前时间的 Unix 时间戳可以 Date.now()

补:慎用 ||填充默认值

这反而是 JS 老鸟更容易犯的错误。给用户传入的对象填充默认值是很常见的行为,他们总是随手就写:

config.prop1 = config.prop1 || 233;

config.prop2 = config.prop2 || 'balabala';

expr1||expr2的意思是:如果expr1能转换成true则返回expr1,否则返回expr2

expr1||expr2<=>Boolean(expr1)?expr1:expr2

哪些值不能转换为 true 呢?

null

undefined

NaN

0 !!!

空字符串('') !!!

如果用户指定了传入参数的值为 0 或者是空字符串的配置项,它的值就会被强制替换为默认值,然而实际上只有 undefined应该被认为是用户没有指定其值(语义上可以这样理解: null表示 用户让你给他把这个位置空着;而 undefined表示 用户没发表意见)

所以就应该是这样:

config.prop1 = config.prop1 !== undefined ? config.prop1 : 233;

config.prop2 = config.prop2 !== undefined ? config.prop2 : 'balabala';


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-88203-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 赵延寿
      赵延寿

      如果我们有10艘这样的阿利伯克宙斯盾

    • 对外相继
      对外相继

      世界格局由美国一超独霸转向多极并起并存的时代——更是中华盛世主导世界时代的到来

    热点图片
    拼命载入中...