一、Javascript中“==”与“===”的区别
1、对于string,number等基础类型,==和===是有区别的
1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
2)同类型比较,直接进行“值”比较,两者结果一样
2、对于Array,Object等高级类型,==和===是没有区别的
当一个变量定义为Arrary和一个变量定义为Object类型时,但是其值相同时,==和===比较的结果是相同的,因为它是进行“指针地址”比较
3、基础类型与高级类型,==和===是有区别的
1)对于==,将高级转化为基础类型,进行“值”比较
2)因为类型不同,===结果为false
二、this
var that = this;
三、setTimeout和setInterval
//延迟5000ms执行一次
setTimeout(function () {
that.change();
},5000)
//每5000ms执行一次
setInterval(function () {
that.change();
},5000)
四、时间
1、
var dateFmt = 'yyyy-MM-dd HH:mm:ss'
直接通过以下工具方法实现即可,s就是要传入的日期,返回结果就是Date类型。
function StringToDate(s) {
alert("得到的日期字符串 : " + s);
alert(parseInt(s.substring(0,4),10));
alert(parseInt(s.substring(5,7)-1,10));
alert(parseInt(s.substring(8,10),10));
alert(parseInt(s.substring(11,13),10));
alert(parseInt(s.substring(14,16),10));
alert(parseInt(s.substring(17,19),10));
var d = new Date();
d.setYear(parseInt(s.substring(0,4),10));
d.setMonth(parseInt(s.substring(5,7)-1,10));
d.setDate(parseInt(s.substring(8,10),10));
d.setHours(parseInt(s.substring(11,13),10));
d.setMinutes(parseInt(s.substring(14,16),10));
d.setSeconds(parseInt(s.substring(17,19),10));
return d;
}
2、 将日期转换为指定的格式
var time1 = new Date().format("yyyy-MM-dd hh:mm:ss");
3、将指定的日期转换为"年月日"的格式
var oldTime = (new Date("2012/12/25 20:11:11")).getTime();
var curTime = new Date(oldTime).format("yyyy-MM-dd");
4、将 "时间戳" 转换为 "年月日" 的格式.
var da = 1402233166999;
da = new Date(da);
var year = da.getFullYear()+'年';
var month = da.getMonth()+1+'月';
var date = da.getDate()+'日';
console.log([year,month,date].join('-'));
五、Json
1、JSON字符串转换为JSON对象
要使用上面的str1,必须使用下面的方法先转化为JSON对象:
//由JSON字符串转换为JSON对象
var obj = eval('(' + str + ')');
或者
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
或者
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
然后,就可以这样读取:
Alert(obj.name);
Alert(obj.sex);
特别注意:如果obj本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换)还是JSON对象,但是使用parseJSON()函数处理后会有问题(抛出语法异常)。
2、可以使用toJSONString()或者全局方法JSON.stringify()将JSON对象转化为JSON字符串。
例如:
var last=obj.toJSONString(); //将JSON对象转化为JSON字符
或者
var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
alert(last);
注意:
上面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。
六、判断是否为整数
任何整数都会被1整除,即余数是0。利用这个规则来判断是否是整数。
function isInteger(obj) {
return obj%1 === 0
}
七、console
// 启动计时器 console.time('testForEach'); // (写一些测试用代码) // 停止计时,输出时间 console.timeEnd('testForEach'); // 4522.303ms
//显示类型
console.log( typeof appVue.totalMileage)
//转json
console.log(JSON.stringify(cameraInfo))
八、js获取日期
var myDate = new Date();
var o = {
"M+" : myDate.getMonth()+1, //月份
"d+" : myDate.getDate(), //日
"h+" : myDate.getHours(), //小时
"m+" : myDate.getMinutes(), //分
"s+" : myDate.getSeconds(), //秒
"q+" : Math.floor((myDate.getMonth()+3)/3), //季度
"S" : myDate.getMilliseconds() //毫秒
};
var myDate = new Date();
console.log(myDate.toLocaleTimeString())
九、保留小数
Math.floor(appVue.congestionLengthRate * 100) / 100
十、JavaScript数组深拷贝和浅拷贝
直接赋值的方式就是浅拷贝,事实证明如果只是简单的将它赋予其他变量,那么我们只要更改其中的任何一个,然后其他的也会跟着改变,这就导致了问题的发生。
方法一:js的slice函数:返回一个数组的一段。(仍为数组)
arrayObj.slice(start, [end])
方法二:js的concat方法
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
arrayObject.concat(arrayX,arrayX,......,arrayX)