js 有些很奇怪的地方

当然对其他人来说没什么奇怪的,只有我这样一知半解才会觉得奇怪。

比如你跟它要月份,它给你少算一个月,得加回去才行。什么意思?

getToday: function (){
    let date = new Date(),
    month = date.getMonth() + 1
    return date.getFullYear() + "年" + month + "月" + date.getDate() + "日"
}

在 js 里,这些东西都被当作 false:

undefined
null
NaN
''
-0
0
+0

我是怎么后知后觉地了解到这个常识的呢?是这样,我继承的代码里有很多这样的东西:

if ( val != undefined && val != null && val != '' ) {
    // ...
}

就是 val 存在嘛,这样好了:

if ( val ) { // 如果 val 有东西,这里就会是 true
    // ...
}

So you see it coming. Sooner or later 自然就出现了 val 明明有东西,上面却等于 false 的情况。哎,就是跟数字有关的那几种啦。0 是 false,倒也没什么不合理。于是我写了个不严谨的小方法,又可以继续懒了。

isEmpty: function (val) {
    if( val == undefined || val == null || ( typeof(val) == 'string' && val == '' ) ) {
        return true
    } else {
        return false
    }
}

最后说一个:浮点数运算。

以前在 python 家也见识过浮点数的本事,但它是以这种形式表现:百万分之一累加百万次后得不到 1,有点偏差。js 这个就太经典了:

0.1 + 0.2 = 0.30000000000000004

In your face!

总之遇到小数都逐个先转成整数就对了。

写这么简单的东西感觉自己好白痴。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。