变量输出
console.log(010) // 8 八进制
console.log(0x10) // 16 十六进制
console.log(0b10) // 2 二进制
ES5遍历数组方法特点
let array = [,1,,2,,3];
array = array.map((i) => ++i)
//[,2,,3,,4]
forEach,filter,every,some会跳过空位,map会跳过空位,但是会保留这个值
JS变量回收
var i = 1;
var i = 2;
var add = function() {
var i = 0;
return function()
{
i++;
console.log(i);
}
}();
add();
//有三个变量未回收:分别为第二个变量i、变量add、和add函数内的i(形成了闭包)
代码回收规则如下:
1.全局变量不会被回收。
2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。
3.只要被另外一个作用域所引用就不会被回收(闭包)
JSDOM选择器
类别1:参数类似css
document.querySelector('.item'); // 选出一个class为item的dom
document.querySelectorAll('.item'); // 选出一组class为item的dom
类别2:
document.getElementsByClassName('item'); // 选出一组class为item的dom
document.getElementById('inp'); // 选出一个id为inp的dom
等等
二者区别为
1、query...API选择器不是实时的为静态;而getElement...则为实时为动态
2、getElement...性能上也要比query...快
JS浮点数处理精度
IEEE 754:IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。
在javascript中Number数据类型使用IEEE754格式表示整数和浮点数,浮点数处理精度为17位小数,并且浮点数值计算会产生舍入误差问题,如下:
console.log(0.1 + 0.2) //0.30000000000000004
这种情况是使用基于IEEE754格式的数值的浮点计算的通病
Undefined和Null
console.log(undefined == null) // ture
之所以出现这种情况,是因为在javascript中undefined派生自null