**JS数据类型之 object 可以与 String 相等**
2016-10-13 16:42
501 查看
今天在浏览器和微信开发者工具测试网页的时候,发现写出的react组件无法渲染出来,多番调试终于发现问题所在,废话不多说上代码。
先来看一般浏览器中的代码
再来看微信开发者工具中的代码
**疑问 :
普通浏览器下 boolean运算的机制是怎样的?
微信开发者工具又为何不同?**
先来看一般浏览器中的代码
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运算的机制是怎样的?
微信开发者工具又为何不同?**
相关文章推荐
- 面试题---实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- 判断js中各种数据的类型方法之 typeof() 和 Object.prototype.toString() 详解
- JS的数据类型:number,string,boolean,null,undefined,object,function
- 实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- 实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- js 检测数据类型instanceof/constructor和 Object.prototype.toString.call()
- js中利用Object.prototype.toString.call()判断数据类型
- js数据类型只string,object
- 写一个方法clone; 实现js五种数据类型(string, number, boolean, array, object)的复制
- Map<String,object>也可以存list这样的数据,那么1map怎么遍历 2map能不能替代list 3既然map和list可以存下任何类型的数据,那么单map就可以存下任何类型的数据
- 后台返回一个string类型的json格式数据,前台js如何读取?
- js表格排序实例分析(支持int,float,date,string四种数据类型)
- JavaScript变量二(数据类型,Number,String,Object)
- JavaScript:Object.prototype.toString进行数据类型判定
- 由String的内存分配了解Object和基础数据类型内存分配
- Android中将List<Map<String, Object>>类型数据与字符串的相互转化
- JS数据类型之String类型
- Redis中String类型的Value最大可以容纳数据长度
- js表格排序实例分析(支持int,float,date,string四种数据类型)
- js 数据类型 Array,Object,RegExp