zoukankan      html  css  js  c++  java
  • 一个小错误引发思考最终得出数组转字符串的新方法

    今天在项目中犯了一个算得上是低级错误的错误吧

    我在构造函数里声明了一个angle变量,

    this.angle;

    然后在后面某函数中对此变量进行了+=操作,

    this.angle+=90

    最后在一系列逻辑后我发现this.angle报错 NaN,马上定位到构造函数,就发现了原来该变量声明了但并未初始化赋值

    求不笑,偶尔也是会傻乎乎犯些这种低级错误的,而这一次暴露出来完全是因为我在后面使用了+=操作,如果后面是单纯的 = 赋值操作,这样构造函数里是可以不初始化的

    这时,我突然想试试如果+=后面不是数字会怎样,于是

    this.angle+="abc"

    控制台输出   undefinedabc

    原来一个未初始化的变量+=一个字符串会得到undefined和该字符串拼接起来的一个字符串啊!

    this.angle+=true  或  this.angle+=false

    控制台输出 NaN

    原来一个未初始化的变量+=一个bool值就相当于+=1或者+=0啊,所以最后得出了和+=数字一样的NaN啊!

    如果你认为我就只是发现了这么点东西你就太年轻了

    this.angle+=[1,2,3,"a"]

    控制台输出 undefined1,2,3,a

    然后我发现数组变成字符串了

    接下来我突然想起原来有一个简单的将数字转为字符串的方法

    var num=1;

    num+=""

    得到num="1"

    如果我们将一个数组+=""

    [1,2,3,a]+=""

    得到1,2,3,a

    然后用replace干掉,后就成功的将数组转换为字符串了

    于是,数组转字符串我又发现了一种方法,虽然可能早就有人发现了,或者这方法很蠢,但我总算是发现了第二个方法

    var arr=[1,2,3,5];

    arr=(arr+"").replace(/,/g,"");

    最终得到1235

    而最常用的数组转字符串的方法是

    arr=arr.join("");

    当然,这种最常用的怎么看好像也比上面的好,但这并不是重点

    重点是我又发现了一种方法有木有!!

    所以有的时候犯一些小错误时不要轻易一笔带过,静下心来想一想,多思考一下,也许你就会有新的收获哦

    ps:

    附上一个字符串转数组的高逼格方法,也是以前无意中发现的哟

    常规的方法是

    str.split("");

    高逼格方法是

    str=Array.prototype.slice.call(str); //call换成apply也可以

  • 相关阅读:
    ckeditor添加自定义按钮整合swfupload实现批量上传图片
    H5移动端适配之px转vw(附工具)
    原生js实现复制文本到粘贴板
    快速删除项目中的输出日志console.log
    toString和valueOf使得对象访问时显示一个特定格式的字符串,但是可以进行数字运算
    __defineGetter__和__defineSetter__在日期中的应用
    观察者模式(订阅-发布者模式)
    原生js扫雷代码
    身份证验证思路及代码
    IMEI校验思路及代码
  • 原文地址:https://www.cnblogs.com/raoyunxiao/p/4768144.html
Copyright © 2011-2022 走看看