JS:问题记录一

大纲



  • 字符串和日期的转换问题
  • 数字比较大小(字符串和数字)
  • 浮点数计算精度问题
  • undefined & null &NaN
  • 运算符“+”


  • 1.字符串和日期的转换问题


  • 将”2018-10-09 12:20:20” —->“09102018”
  • var str = "2018-10-09 12:20:20" 
    var arr = str.split(" ")
    var date = arr[0];
    date = date.split("-")
    date = date.reverse().join("")//reverse(),倒叙,09102018
    //date = date.reverse().join("")//20181009

  • 将“03/09/2017” ——>“03092017”
  • var str = "03/09/2017"
    var arr = str.split("/")
    arr = arr.join("")

  • 将“2018-10-09 ”—>“09/10/2018”
  • str = "2018-10-09"
    var date = new Date(str)
    var day  = date.getDate()
    if(day<10){
        day = "0"+day;
    }
    var month = date.getMonth()+1
    if(month<10){
        month = "0"+month
    }
    var year = date.getFullYear()
    var redate = day+"/"+month+"/"+year

  • new Date()
    只允许带“-”或者“/”的字符串进行转化,并且月份在日期前面
  • dt = new Date('2014-12-25 12:00:00'); 
    //Thu Dec 25 2014 12:00:00 GMT+0800 (中国标准时间)
    d = new Date('2018-10-09 12:20:20');
    //Tue Oct 09 2018 12:20:20 GMT+0800 (中国标准时间)
    d = new Date("09/12/2017");
    //Tue Sep 12 2017 00:00:00 GMT+0800 (中国标准时间)
    d = new Date("2017/09/08");
    //Fri Sep 08 2017 00:00:00 GMT+0800 (中国标准时间)
    d = new Date("20170908");
    //Invalid Date
    


    2.数字比较大小(字符串和数字)


  • 17和15比较 ,正常数字比较;“17”和“5”比较,从左到右一位位比较
  • 17>15//true
     17>5//true
     "17">"15"//true
     "17">"5"//false,1<5
     Number("17")>Number("5")//true


    3.浮点数计算问题


  • 浮点数相减,不一定是整数,因为转换为二进制时会变成无限小数
  •  0.4-0.1//0.30000000000000004


    4.undefined & null &NaN


    var array = [1,2,2,2];
    array[4];//undefined
    var a = null;
    var b = undefined;
    a == b;//true,==值相等
    a === b;//false,===值和类型都相等
    null == false;//false
    undefined == false;//false
    null == true;//false
    null == true;//false
    !null;//true
    !undefined;//true

    详细阅读:

  • http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html
  • http://yanhaijing.com/javascript/2014/01/05/exploring-the-abyss-of-null-and-undefined-in-javascript/


  • 5.+运算符


  • 对数字进行加法运算
  • 对字符串进行连接
  • 以下是一些试验

  • 字符和数字
  • "0"+12+2;//"0122"
    "0"+(12+2);//"014"

  • 对数组进行+运算,实际先转换为字符串,再进行+运算
  • [1,2]+[3,2]//"1,23,2"
    [1,2]+3//"1,23"
    [1,2]+3+2//"1,232"

  • 要对数组正确连接,使用函数concat
  • [1,2].concat([3,4])// [1, 2, 3, 4]

  • 布尔类型
  • true+true//2
    true+false//1
    false+false//0

  • Object
  • var num = new Number(5)
    var boolean = new Boolean(true)
    var str = new String("abd")
    var sum1 = num+num//10
    var sum2 = num+boolean//6
    var sum3 = num+str//"5abd"

    对于第五点的总结:

    1.JS有6种数据类型:

  • undefined
  • boolean
  • number
  • string
  • function
  • object
  • 2.包装器类型也都是 object 类型,对于算数运算符 Number 和 Boolean 表现为数字。例如:

  • new Number(5),
  • new Boolean(true)
  • new String(“abc”)
  • 3.+ 运算符对于不同类型进行运算后,得到的结果类型

    这里写图片描述

    参考:

  • https://zhuanlan.zhihu.com/p/24699027
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值