wumi_blog
wumi_blog copied to clipboard
判断非空 Date , dom是否含有某属性 , ~~运算 , 使用一元加(+)模拟Number()函数
- 判断非空
/*判断非空*/
export function isEmpty(val) {
if (val == null)
return true;
if (val == undefined || val == 'undefined')
return true;
if (val == "")
return true;
if (val.length == 0)
return true;
// ! \s 匹配空白 *零个或若干
return !/[^(^\s*)|(\s*$)]/.test(val);
}
- Date
//今天
let date = new Date();
//月份0-11 需加1
let [yy,mm,dd] = [date.getFullYear(), date.getMonth() + 1, date.getDate()];
- 是否含有某属性
//是否含有属性
function hasAttr(dom, attr) {
let str = dom.getAttribute(attr);
return typeof str != "undefined" && str != "false" && str !== null;
}
~~
将操作数转化为 32 位有符号整数。
~~ null // 0
~~ undefined // 0
~~ NaN // 0
~~ {} // 0
~~ true // 1
~~ '' // 0
~~ 'string' // 0 注意这里是0
~~ '1' // 1
~~ Number.POSITIVE_INFINITY // 0
~~ 1.2 // 1
~~ -1.2 // -1
~~ 1.6 // 1
~~ -1.6 // -1
~~ (Math.pow(2, 31) - 1) // 2147483647 = 2^31-1
~~ (Math.pow(2, 31)) // -2147483648 = -2^31
~~ (-Math.pow(2, 31)) // -2147483648 = -2^31
~~ (-Math.pow(2, 31) - 1) // 2147483647 = 2^31-1
~~ (Math.pow(2, 32)) // 0
使用一元加(+)模拟Number()函数
原理:对非数值类型的数据使用一元加(+),会起到与Number()函数相同的效果。
- null转换为0
- undefined转换为NaN
- false转换为0,true转换为1
- 对于字符串:
- 空字串转换为0
- 含有数字或者浮点数或者十六进制格式的数据(11, 0.3, 0xfe等),转换为相应的数值
- 含有其他格式字符,无法转换为数值的字符串,转换为NaN
- 对于对象,先调用valueOf()方法,在转换,若结果为NaN,那么再调用toString()方法,之后再转换