在一行中返回相反的布尔值
return opposite Boolean value in one line
常见的Javascript知识(或任何编程语言)告诉我们,当它是布尔值(或在条件中转换为布尔值等)时,使用!variable
将等于相反的值。
我有这个Javascript:
$(document).ready(function () {
var addEvent = function (element, myEvent, fnc) {
return ((element.attachEvent) ? element.attachEvent('on' + myEvent, fnc) : element.addEventListener(myEvent, fnc, false));
};
var openBar = false;
addEvent(document.getElementById('toggle'), 'click', function (event) {
var toggler = event.currentTarget,
barWrap = document.getElementById('left-wrap'),
newSize = (!openBar) ? 20 : 0;
$(barWrap).animate({
width: (newSize / 100 * window.innerWidth)
}, {
queue: false,
duration: 300,
step: function (now) {
toggler.style.right = now + 'px';
//barWrap.outerWidth = now;
document.body.style.marginRight = now + 'px';
},
complete: function () {
newSize = (newSize === 20) ? '20%' : '0%';
document.body.style.marginRight = newSize;
toggler.style.right = newSize;
barWrap.style.width = newSize;
}
});
return !openBar;
});
});
。我扔进了这个JSFiddle...这将显示它打开切换栏但不关闭它......有很多蓬松的HTML和CSS对你们来说太美化了。
现在,为什么倒数第三行没有返回相反的值? 我已经成功地使用了以下内容:
return openBar = !openBar;
但是出于某种原因,浏览器、JSfiddle 和 JShint 喜欢在我这样做时生气,因为它们期望条件或值而不是赋值。 但它们不会加载失败。 我也知道我可以使用:
openBar = !openBar;
return openBar;
甚至
openBar = !openBar;
return;
但我喜欢尽可能地最小化,真的只是想了解为什么这从根本上对我不起作用,以便我将来可以纠正它。
这是否与其他浏览器(使用 Chrome 30 和 Firefox 25)不兼容,或者可能会在我意想不到的地方出错?
还是我可以忽略更多的不便/警告(例如当我知道结果只能是一个数字时,在比较 0 时告诉我使用 === 而不是 ==)?
据我所知,您必须显式重新分配原始openBar
变量才能正常工作。我很想看看一个例子,说明是什么让你不这么认为。我做了这个小修改并删除了退货:
newSize = (openBar = !openBar) ? 20 : 0;
http://jsfiddle.net/a9NPG/1/(虽然我读到你对它并不真正感兴趣。
Array.reverse()
是个不错的小家伙:
演示
$(function () {
var $toggler = $('#toggle'),
$barWrap = $('#left-wrap'),
$doc = $('body'),
newSize = ['0', '20'];
$toggler.on('click', function(){
var winW = window.innerWidth,
perc = newSize.reverse()[0],
px = perc / 100 * winW;
console.log( px );
$barWrap.animate({ width : px });
$toggler.animate({ right : px });
$('body').animate({ marginRight: px });
});
});
相关文章:
- webpack优化最小化返回布尔值,而不是工厂值
- 为什么这个对象方法不返回布尔值Javascript
- 循环返回布尔值
- 如何为窗体返回布尔值's”;onsubmit”;属性,这取决于ajax调用的成功与否
- 如果查询搜索包含元素,如何返回布尔值
- 在使用javax.script.ScriptEngine对象评估javaScript代码后返回布尔值
- 为什么Array.prototype.some返回布尔值
- 在Javascript中返回布尔值时.id与.className的比较
- 通过选择器检查对象是否存在,使用jQuery或Javascript返回布尔值
- 如何从确认对话框插件返回布尔值
- 为什么要!函数之前不返回布尔值相反的值
- 如何根据promise的结果返回布尔值?
- 如何声明一个javascript变量并将其值赋给一个返回布尔值的php文件
- 从函数返回布尔值
- Angular自定义过滤器只返回布尔值=== true的结果
- 编辑:为什么typeof(0)返回布尔值而不是数字?
- jQuery ';不返回布尔值
- 调用一个为ng-show返回布尔值的函数是个好主意吗
- 函数的目的只返回布尔值
- 为搜索的键/值对返回布尔值的最简单方法(Javascript)