zoukankan      html  css  js  c++  java
  • 如何强制指定输入的参数必须为数字

    var circle = require('./Circle-p24');
    
    function createCircle(circleNumber){
    circleNumber = (typeof circleNumber == 'undefined' || circleNumber == null || circleNumber == false || isNaN(circleNumber)) ? 1 : circleNumber; var arr = []; for(var i=0;i<circleNumber;i++){ arr[i] = new circle((i+1)*2,(i+1)*4,(i+1)*6); console.log(arr[i].area()); } } createCircle(NaN);

     
    在下面这一句里面,分别检查了circleNumber为undefined、null、0、""、" "、"0"、[]、NaN的情况

    circleNumber = (typeof circleNumber == 'undefined' || circleNumber == null || circleNumber == false || isNaN(circleNumber)) ? 1 : circleNumber;

    一、与false相等的值:

    这个里面,没想到的是‘0’ == false,这应该是字符串‘0’被自动转换成了数字0,然后再自动转换成了false。

    二、与false不相等的值:

    这里之前一直以为null == false 会返回true,其实它会返回false,为赋值的变量undefined与false也不相等。

    还有个很奇怪的地方就是:原本记得NaN不等于false的,因为NaN连NaN自己都不相等,但是在三目运算符里面,它居然等于false了。

    这说明三目运算符并不是根据判断条件是true还是false来决定执行第一条还是第二条语句,而是只要判断条件不是true,默认就执行第二条,否则执行第一条。如果判断条件既不是true,也不是false,那就默认执行第二条了。这个细微的差别如果理解不正确,就可能导致难以发现的bug。

    三、其他

     本来以为{} == false 也会返回true,其实它会返回false。

    四、Number转换

    本来以为Number("23sdf")会返回23呢,其实是返回NaN。

    Number("23sdf")返回23应该是PHP的规则,跟js的语法规则记混淆了。

  • 相关阅读:
    Android ExpandableListView的下拉刷新实现
    Android 使用shape来画线
    三种常见的子查询(三十一)
    数据的准备(三十)
    LIMIT语句解析及本章简单回顾(二十九)
    WHERE、ORDER BY、GROUP BY、HAVING语句解析(二十八)
    查询表达式解析(二十七)
    单表的更新UPDATE和删除记录DELETE(二十六)
    插入记录INSERT(二十五)
    修改数据表——修改列定义和更名数据表(二十四)
  • 原文地址:https://www.cnblogs.com/macliu/p/8983675.html
Copyright © 2011-2022 走看看