代码如下:
注:email为nnnn@163.com
function gotoEmail(email) {
var aa = email.split('@@')[1];
alert(aa);//aa输出的是163.com
alert("cnm:" + aa.toString() == "163.com");//此处确输出的false
}
这是为什么呢?
alert("cnm:" + aa.toString() == "163.com") //alert("cnm:163.com" == "163.com") //字符串"cnm:163.com"等等"163.com"吗? 肯定为false咯
var aa = email.split('@@')[1];
此处我已经进行了分割。所以aa输出的是163.com
然后我用的aa去跟"163.com"作比较
var aa = email.split('@@')[1];
此处我已经进行了分割。所以aa输出的是163.com
然后我用的aa去跟"163.com"作比较
@瑶瑶EXO:
看这一句:alert("cnm:" + aa.toString() == "163.com");
@骑着蜗牛耍流氓: 亲,是的呀。我的aa已经是等于163.com了,我所有问的就是:为什么aa已经等于163.com了,确aa.toString() == "163.com"为false呢。你可以无视那个"cnm:"那个字符串
@瑶瑶EXO: 谁告诉你可以无视那个cnm字符串了?
@瑶瑶EXO: 这个不能无视,你把“cnm:”去掉就为true了好么
@骑着蜗牛耍流氓: NO。 不行,我之所以让你无视它,是因为没有它也为false
@瑶瑶EXO: 怎么可能?,除非你的aa不是163.com 如果是的话一定为true的
@瑶瑶EXO:
var aa="163.com"; alert(aa.toString()=="163.com")
@骑着蜗牛耍流氓: 对呀,我也说怎么可能呀,可是我都alert(aa)弹出的是163.com了。可是就是为false.我也特意检查了是不是多加了一个空格的原因,但是不是。 后面我又想是不是MVC中有什么特殊的地方(因为我刚接触MVC)。
@瑶瑶EXO:
加个debugger调试看看值
@瑶瑶EXO: 嘿。我发现了耶,好像是因为email.split('@@')[1];这句的问题,像你刚才那样,我也可以照样输出,但是var aa=email.split('@@')[1]; 确实是弹出的163.com呀。我就不明白了
@骑着蜗牛耍流氓: 如何弄?
@瑶瑶EXO: debugger //相当于一个VS的断点,加到你想要调试的代码上一行。 浏览器开发者工具(F12)打开,刷新一下操作对应的函数就会进去断点了
代码执行优先级,最后一个比较,会先执行+号,然后再执行==,所以,嘿嘿~ BTW:I hate EXO.
首先我也这么想的,这是我先前的代码复制过来的,但是在没有前面字符串的时候。它为什么依旧为false呢
@瑶瑶EXO: 你还是把代码贴完吧,很有可能是空格什么的不可见字符。
@幻天芒: 我想请问一下是不是ViewDate[""]中获得的值有固定的长度? 这是email:18073314832@163.com 可是我获得的长度是40. 我估计就是这个原因,肯定是我获得的163.com后面还有长度
幻天芒大哥,看了我提的TFS的问题了吗?求指导啊。
@瑶瑶EXO: 本身并没有固定长度的说法,可能需要你看后台的代码了。
@晓菜鸟: 没用过TFS,无能为力啊,我用svn和git。
@幻天芒: 嗯,我们以前也是用的SVN,现在准备用用TFS,谢谢了!
最后的比较会先执行“+”拼接字符串,然后才执行“==”进行比较,用括号把里面括起来就行了。
alert("cnm:" + (aaa.toString() == "163.com"));//此处确输出的true.
逻辑哦 aa 的 值 是 163.com
你的判断是 "cnm:" + aa.toString() == "163.com"
换言之 你要求 cnm:163.com=163.com
你肿么看
楼上也说了 你敢不敢 (aaa.toString() == "163.com") 程序不要想当然
运算符的优先级 一定要 知晓 基础是很重要的