js 小贴士 Tips 或 踩坑

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

你有必要知道的 25 个 JavaScript 面试题

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处理的,所以用fillES6的函数填充元素到空位就行了。

  const arr = new Array(6).fill(1).map((x, index) => index + 1);
正确的结果

但是又发现了新问题:
forEach 没法输出undefined

无法输出undefined

目前的办法是用for of循环
for of

4. [ , ] 其实只有一个元素

看到一个逗号,认为前后各有一个元素,其实不然,逗号后面没有任何东西,则后面的就不算一个元素


逗号后面没任何元素

逗号后面有元素
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,805评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,148评论 0 62
  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 6,128评论 8 25
  • 能说出来的苦,那都不算苦。
    AAAA红梅阅读 109评论 0 0
  • 我 闯进了迷宫, 面对无数个不知归途的交叉口, 只能站在原...
    操场上的你和我阅读 292评论 0 0