大纲
- 字符串和日期的转换问题
- 数字比较大小(字符串和数字)
- 浮点数计算精度问题
- 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