1. js new创建对象时有无括号的区别
比如:
function Person(name){
this.name=name;
}
var p=new Person();
var pp=new Person;
//如果不加参数的话,这两个创建方式没啥区别,如果需要带参数,必须使用var p=new Person(name);
2. 判断一个数字是不是整数
将数字转化为整数,看和自己相等与否
function isInteger(x) {
return parseInt(x, 10) === x;
}
ES6 对数值进行了扩展,提供了静态方法 isInteger() 来判断参数是否是整数:
Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isInteger(25.1) // false
Number.isInteger("15") // false
Number.isInteger(true) // false
3. new Arrray(3) 返回的空位数组,即三个位置也不是undefined
var arr = new Array(6).map((x, index) => index + 1);
本以为应该返回从1到6的数字,其实:
真正的返回
阮一峰 ECMAScript 6 入门 数组的空位 有做了详细的说明,map
会跳过空位,但会保留这个值,也就是empty;而every some forEach reduce filter
都会跳过空位。比如reduce
reduce
控制台没有任何输出。怎样解决上面的问题?ES6是将空位当做undefined处理的,所以用
fill
ES6的函数填充元素到空位就行了。
const arr = new Array(6).fill(1).map((x, index) => index + 1);
正确的结果
但是又发现了新问题:
forEach 没法输出undefined
无法输出undefined
目前的办法是用
for of
循环for of
4. [ , ] 其实只有一个元素
看到一个逗号,认为前后各有一个元素,其实不然,逗号后面没有任何东西,则后面的就不算一个元素
逗号后面没任何元素
逗号后面有元素