• 一个小错误引发思考最终得出数组转字符串的新方法


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

    我在构造函数里声明了一个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也可以

  • 相关阅读:
    VC实现开机自启动
    用Shell扩展实现源代码统计程序
    在(CListView)列表视图中添加右键菜单的方法
    关于打开外部程序并且发送一个按键消息 (转
    vc中运行外部程序的方法
    如何在 XCode 4.2 設定部分程式碼不使用 ARC 方式分享(转)
    Xcode调试断点不停止解决方案!(转)
    NSString+NSMutableString+NSValue+NSAraay用法汇总 (转)
    对于Retain和Assign属性的理解(转)
    基于Xcode4开发第一个iPhone程序:“Hello World”(转)
  • 原文地址:https://www.cnblogs.com/raoyunxiao/p/4768144.html
Copyright © 2020-2023  润新知