您的位置:首页 > 移动开发 > Objective-C

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

2016-10-13 16:42 501 查看
今天在浏览器微信开发者工具测试网页的时候,发现写出的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运算的机制是怎样的?

微信开发者工具又为何不同?**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐