我们来判断一个值是否为数字,可以把它转化为数字,看是否为NaN 然后,再判断是否等于0即可简单的来实现判断了。
所以,代码如下
(num) => {
if (!isNaN(parseInt(num))){
if (num !== 0) {
// do something
}
}
}
逻辑非常清楚。但是有点冗余。其实 isNaN 对于非数字的输出都是 true ,所以,代码可以修改为:
(num) => {
if (!isNaN(num)){
if (num !== 0) {
// do something
}
}
}
好一点,但是两层判断,感觉恶心。所以继续优化
(num) => {
if (!isNaN(num) && parseInt(num) !== 0){
// do something
}
}
去掉一层循环,好了很多。但是这个代码还是感觉恶心。能不能再优化一下呢?
(num) => {
if (!!+num) {
// do something
}
}
看不懂了,得解释以下, + 可以把任何东西变成 数字或者 NaN ,而如果值等于0,转化为布尔值也是为false,所以,判断可以合并为 !!+num 即可。
看上去不错,换个思路,既然 0 是false 那么我们能不能把所有的非数字或者数字字符串的内容变成 0 呢?代码出炉:
(num) => {
if (~~num) {
// do something
}
}
这里用了两个字符,比上面的三个字符更加精简了。我们能不能用一个字符来实现呢?可以。判断条件是可以自动转化为布尔值的。所以,上上个例子中的 !!是多余的。
(num) => {
if (+num) {
// do something
}
}
请谨慎在项目中使用这样的代码,挨打不要找我。
本文由FungLeo原创,允许转载,但转载必须附带首发链接。来源:https://blog.csdn.net/FungLeo/article/details/80535029
在写网页的程序的时候,经常碰到要在网页加载完全之后再去展现页面,加载中的时候通过显示loading...的样式。这时候我们会直接想到使用window.onload的方式,或者是img对象的complete属性
async/await 语法让异步调用写起来像写同步代码,在编写代码的时候,可以避免逻辑跳跃,写起来会更轻松。
使用UglifyJS合并/压缩JavaScript ,UglifyJS3与UglifyJS2相比API变动较大,简化较多,文档也增加了不少示例。
试着不用if撸代码,是件很有趣的事,而且,万一你领会了什么是“数据即代码,代码即数据”呢?
本文重在列出并解释说明 JS 中各种容易出错的坑和细节,供大家更加深入理解为什么 JS 会这样
一行能装逼的JavaScript代码,其实靠的是js的类型转化的一些基本原理,本篇就来揭密”sb”是如何炼成的。相信你如果能把这个理清楚了,以后遇到类型转化之类的题目,就可以瞬间秒杀了。
学习JavaScript时,当时我对于undefined 和 null 比较困惑 ,因为他们都表示空值。他们有什么明确的区别吗?他们似乎都可以定义一个空值,而且 当你进行 在做null ===undefined 的比较时,结果是true。
JavaScript是一门伟大的语言,作为一门弱类型语言,它拥有非常简洁的语法,庞大的生态系统,灵活性非常强大。js各种神奇的写法,所谓的神奇也就是罕见。下面就开始介绍这些怪异的写法吧。
在前端开发中,遇到如下需求:隐藏手机号码,将中间几位替换为*。通过js如何实现手机号码隐藏中间4位呢?下面整理几种实现方式:使用正则、通过长度截取。
在一些网页中我们可以常见的“设置为首页”和“ 收藏本站”,以及“保存到桌面”等功能,使用js是如何实现的呢?这里为大家分享下实现方法,完美兼容IE,chrome,ff等浏览器
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!