两个JS的不好设计
1.相等判断
if(a){}
相当于
if(a == ture){}
然而下面的相等判断都为true
0 == false
"" == false
"false" == false
undefined == false
null == false
假设你有一个需求,根据后端返回显示数字。
如果返回null,显示-1。
你写下如下代码:
if(a){
return a;
}
else{
return -1;
}
这段代码有问题,问题是a==0时,返回-1,而不是返回0
2.new Date
new Date(null) //Thu Jan 01 1970 08:00:00 GMT+0800 (CST)。
new Date(0) // Thu Jan 01 1970 08:00:00 GMT+0800 (CST)
new Date(false) // Thu Jan 01 1970 08:00:00 GMT+0800 (CST)
new Date(undefined) // Invalid Date
new Date('') //Invalid Date。
对于 new Date的传参,需注意特别判断。
由1、2可知JS里面做判断,需===或者把其它异常值转换为一个异常值是较好的实践。
两个JS的不好设计的更多相关文章
- 两个js文件之间函数互调问题
按照常理来说,在<body>标签结束之前以下面的方式引入两个js文件 <script src="a.js"></script> <scri ...
- js中同一个onclick绑定了两个js方法出现的问题
问题: js中如果同一个onclick绑定了两个js方法问题,即 <li onclick="f1(),f2()"></li> 两个方法f1,f2中都分别有一 ...
- 两个js冲突怎么解决?试试这四个方法
两个js冲突很让前端头疼,虽然jquery是通用的,但调用不同经常会出问题.jQuery是目前流行的JS封装包,简化了很多复杂的JS程序,JQuery讲浏览器DOM树定义为$,通过$来获取各个子节点. ...
- 两个JS对象怎样才能相等
在JS中,两个对象如何才能相等?下面的两个 Alert,只有一个输出true. 在JS中如何才能构造出两个JS对象相等? var prop1 = {asd:{def:'abc'}}; var pro ...
- 两种 js下载文件的步骤
----------------------------------引用地址链接------------------------------------------------- http://www ...
- 两种js方法发起微信支付:WeixinJSBridge,wx.chooseWXPay区别
原文链接:https://www.2cto.com/weixin/201507/412752.html 1.为什么会有两种JS方法可以发起微信支付? 当你登陆微信公众号之后,左边有两个菜单栏,一个是微 ...
- JS: javascript 点击事件执行两次js问题 ,解决jquery绑定click事件出现点击一次执行两次问题
javascript 点击事件执行两次js问题 在JQuery中存在unbind()方法,先解绑再添加点击事件,解决方案为: $(".m-layout-setting").unbi ...
- JS 面向对象 编程设计
面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装.继承.多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义J ...
- 密码等级:至少包含字母、大小写数字、字符中的两种 JS实现方案
前言 密码,如果设置的太简单,很容易就被攻破,所以很多网站将密码设置的要求设置的挺严格,一般是字母.数字.字符3选2,区分大小写.对于设置得太简单的密码,予以错误提示.或者予以密码等级(低中高)显示, ...
随机推荐
- HTML5语音合成Speech Synthesis API简介
by zhangxinxu from http://www.zhangxinxu.com/wordpress/?p=5865本文可全文转载,但需得到原作者书面许可,同时保留原作者和出处,摘要引流则随意 ...
- vue-cli+webpack+router+vuex---之vuex使用
有信心的可以去看官方的文档 vue 的官方文档有个显著的特点---代码粘贴不全 Vue中文站:cn.vuejs.org vue-router官方教程:router.vuejs.org/zh-cn vu ...
- PHP(css样式)
布局页面的时候 大色块 小色块 ...(就是宽高) 内容布局:浮动,定位,显示,层级 浮动:float(样式名):值:left right设一个父标签,设定宽高,里面随便浮动!!!!!!!!!!!!! ...
- ie9 remove出错 jquery SCRIPT5007: 缺少对象
针对IE11 remove不起作用的问题. 其中IE11.0.37也不支持 IE11.0.42支持可能是由于客户机器设置了兼容模式的原因. 因为里面包含了object元素,移除数据的时候发生的bug. ...
- python全栈开发 * 07知识点汇总 * 180607
07 set集合,深浅拷⻉以及部分知识点补充 一.while,for 循环知识点补充 二.int, str的相关操作 1.列表变字符串 # lst=["红","橙&qu ...
- Win7 搭建Linux开发环境
Vargant Vagrant 是一个基于 Ruby 的工具,用于创建和部署虚拟化开发环境.它使用 Oracle 的开源 VirtualBox 虚拟化系统,使用 Chef 创建自动化虚拟环境. 功能特 ...
- Mac 报错:-bash: telnet: command not found
解决方法 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/i ...
- Windows路由表
对于路由器的路由表,网管都很熟悉,但是windows的路由表,可能了解的人就相对少一些.今天我们就一起来看看windows路由表. 一.windows路由表 1.使用命令 route print 查看 ...
- unity 安装破解提示partern not found和tutorials学习
1.破解安装问题:unity 安装破解提示partern not found 可能和安装了多个版本有关,删除了c下的unity目录也没有解决,试着重新安装也不能破解, 破解的软件的方式是生成lisen ...
- python常用函数及模块
原文来源于博客园和CSDN 1.计算函数 abs()--取绝对值 max()--取序列最大值,包括列表.元组 min()--取序列最小值 len()--取长度 divmod(a,b)---取a//b除 ...