1.5.0库开始要求强制类型转换了?
发布于 6 年前 作者 xiayong 11504 次浏览 来自 问答

之前版本拼接字符串和int,直接用+号连接就能拼接成功,1.5.0开始貌似需要强制转换成字符串才能拼接成功,否则程序就直接跳出,跑不下去了。这么大的改动不说一声直接就改了???

10 回复

排查的结果是微信版本升级到6.5.12以上的版本就不可以了,6.5.12以下的版本就是可以的,需要声明变量

和这个问题应该无关,需要在排查一下是不是和1.5.0的其他改动有关。

我是开启了ES6转ES5,还是报错:ReferenceError: result is not defined,结果是3des里面的加密库,以前没有声明的变量全部报错了,重新声明就可以了

问题原因找到了,是忘了声明”result”。不过也是奇怪,之前一直没声明也能用,1.5.0突然就不行了…

开启了ES6转ES5 会报这个错误,不开启应该不报错的。

你好,如果在工具中开启了ES6转ES5,会启用严格模式,严格模式下不允许显式定义全局变量。这个特性在0.10.101000开始应该一直都有,和基础库版本无关。

// 对比时间戳,得出时差
function getDateDiff(dateTimeStamp){
    var minute = 1000 * 60;
    var hour = minute * 60;
    var day = hour * 24;
    var halfamonth = day * 15;
    var month = day * 30;
    var now = new Date().getTime();
    var diffValue = now - dateTimeStamp;
    if(diffValue < 0){return;}
    var monthC =diffValue/month;
    var weekC =diffValue/(7*day);
    var dayC =diffValue/day;
    var hourC =diffValue/hour;
    var minC =diffValue/minute;
    if(monthC>=1){
    result = "" + parseInt(monthC) + "月前";
    }
    else if(weekC>=1){
    result = "" + parseInt(weekC) + "周前";
    }
    else if(dayC>=1){
    result = "" + parseInt(dayC) +"天前";
    }
    else if(hourC>=1){
    result = "" + parseInt(hourC) +"小时前";
    }
    else if(minC>=1){
    result = "" + parseInt(minC) +"分钟前";
    }else{
    result = "刚刚";
  }
    return result;
}

1.4.2库能一直执行到 return,返回结果值。1.5.0的库,这段代码执行到

result = "" + parseInt(dayC) +"天前";

这行之后就跳出了。

刚刚给所有int再加了一层toString,发现还是不行,到相同位置又跳出了…所以貌似还不是变量的类型问题

可是我们以前上线的有些用户打不开小程序了,因为有些用的第三方的库是没有声明的,跟这个基础库有关系么?

我也发现了,以前的代码没问题,今天更新了版本,1.5.0的版本直接报错,拼接的变量找不到,把基础版本变更为1.5.0以下的就可以了

回到顶部