**JS数据类型之 object 可以与 String 相等**

今天在浏览器微信开发者工具测试网页的时候,发现写出的react组件无法渲染出来,多番调试终于发现问题所在,废话不多说上代码。


先来看一般浏览器中的代码

var HeaderMid = React.createClass({
        headerfn :function(){
            var HeaderTitle;
            var reg = new RegExp('mui\/{1}.{2,}html', 'i');
            var r = window.location.href.substr(1).match(reg);**注意此处在微信中会有差异**
            var urlStr =[
            "mui/index.html",
            "xxxxxxxxxxxxx",
            "xxxxxxxxxxxxx",
            "xxxxxxxxxxxxx",
            "xxxxxxxxxxxxx",];
            var headerStr=[
            <b className="logo"></b>,
            <h2>xxxxxxxxxxxxx</h2>,
            <h2>xxxxxxxxxxxxx</h2>,
            <h2>xxxxxxxxxxxxx</h2>,
            <h2>xxxxxxxxxxxxx</h2>];
            //在这里尝试了一下直接把**html标签**写在**数组**中,居然顺利被解析,意料之外的收获
            var t;
            for(var i=0;i<urlStr.length;i++){
                console.log(typeof(r));// Object
                console.log(typeof(urlStr[i]));//String
                console.log(urlStr[i]==r); //True
                /*原来以为两种类型不同的数据是不会相等的,但是此处居然相等了,不过在微信中,这里不相等,结果为false,个人猜测是**微信执行的是严格模式**,只是作为初学者,暂时没有办法证明,**此处存疑**。*/
                urlStr[i]==r ? t=i : '';
                t==i ? HeaderTitle=headerStr[i]:'';
                console.log(HeaderTitle);
            }
            return HeaderTitle;
        }

再来看微信开发者工具中的代码

var HeaderMid = React.createClass({
        headerfn :function(){
            var HeaderTitle;
            var reg = new RegExp('mui\/{1}.{2,}html', 'i');
            var r = window.location.href.substr(1).match(reg).toString().toLowerCase();**在微信开发者工具中,必须先把object数据转换为String数据类型,并且boolean运算大小写敏感**
            var urlStr =[
            "mui/index.html",
            "xxxxxxxxxxxxx",
            "xxxxxxxxxxxxx",
            "xxxxxxxxxxxxx",
            "xxxxxxxxxxxxx",];
            var headerStr=[
            <b className="logo"></b>,
            <h2>xxxxxxxxxxxxx</h2>,
            <h2>xxxxxxxxxxxxx</h2>,
            <h2>xxxxxxxxxxxxx</h2>,
            <h2>xxxxxxxxxxxxx</h2>];
            //在这里尝试了一下直接把**html标签**写在**数组**中,居然顺利被解析,意料之外的收获
            var t;
            for(var i=0;i<urlStr.length;i++){
                console.log(typeof(r));// Object
                console.log(typeof(urlStr[i]));//String
                console.log(urlStr[i]==r); //false 微信开发者工具中,boolen运算大小写敏感
                console.log(urlStr[i].toLowerCase()==r); //true
                urlStr[i].toLowerCase()==r ? t=i : '';
                t==i ? HeaderTitle=headerStr[i]:'';
                console.log(HeaderTitle);
            }
            return HeaderTitle;
        }

**疑问 :
普通浏览器下 boolean运算的机制是怎样的?
微信开发者工具又为何不同?**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值