关于两句区别isFixed _isIE6 ? false : config.fixedie6Fixed _isIE6 && that.config.fixed这两句区
关于两句区别
isFixed = _isIE6 ? false : config.fixed;
ie6Fixed = _isIE6 && that.config.fixed;
这两句区别是什么啊?
[解决办法]
isFixed = _isIE6 ? false : config.fixed;
转换为
//三项表达式
var isFixed ;
if(_isIE6 ){
isFixed = false;
}else{
isFixed = config.fixed;
}
ie6Fixed = _isIE6 && that.config.fixed;
转换为
//&&操作的意思是前面是true则返回后面的,要不直接返回false
if(_isIE6 ){
ie6Fixed = that.config.fixed
}else{
ie6Fixed = false;
}
[解决办法]isFixed = _isIE6?false : config.fixed;
// _isIE6= false 否则取 config.fixed;
ie6Fixed = _isIE6 && config.fixed;
// _isIE6 时取 config.fixed
[解决办法]说白了这两句话的区别:
第一句是当1._isIE6 为false时config.fixed为true时,isFixed才为true,2.如果_isIE6 为false时config.fixed为false时,isFixed才为false, 3.只要_isIE6 为true时,isFixed为false
第二句是上_isIE6为true时并且config.fixed为true时,isFixed才为true,其他情况下isFixed为false
[解决办法]isFixed = _isIE6 ? false : config.fixed;
_isIE6为真值时isFixed为false。否则isFixed为config.fixed,不一定是逻辑值
ie6Fixed = _isIE6 && that.config.fixed;
_isIE6为非真值是ie6Fixed为_isIE6,不一定是逻辑值,比如null、空字符串等。否则isFixed为config.fixed,不一定是逻辑值
[解决办法]所以两句的区别在于:当_isIE6为非真时,第一个语句ie6Fixed值为false,第二个语句ie6Fixed值为_isIE6
[解决办法]
自己测试一下不就知道了?
a = 1;
b = 2;
document.write( (a ? false : b) + '<br>'); //false
document.write( (a && b) + '<br>'); //2
a = false;
document.write( (a ? false : b) + '<br>'); //2
document.write( (a && b) + '<br>'); //false