javascript - 在一行中返回相反的 bool 值

标签 javascript jquery

常见的 Javascript 知识(或者实际上是任何编程语言)告诉我们,使用 !variable 将等于 bool 值(或在条件中转换为 bool 值等)时的相反值。

我有这个 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;
    });
});

...我把它扔进了this JSFiddle ...这将显示它打开了切换栏但没有关闭它...有很多蓬松的 HTML 和 CSS 太美化了你们。

现在,到底为什么倒数第 3 行没有返回应有的相反值?我已经成功地使用了以下内容:

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/ (虽然我读到你对此并不真正感兴趣。)

关于javascript - 在一行中返回相反的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887582/

相关文章:

javascript - 名称服务器末尾仅需要一个点

javascript - 使用 Knockout-Validation 插件进行独特值验证

javascript - 两个不同元素上的两个 addEventListener 函数

php - 使用base64_encode方法和jquery上传图像时显示进度条

javascript - 在悬停和单击时创建下拉导航

jQuery - 如何按属性名称开头选择值

jquery 如何切换鼠标输入或悬停?

javascript - 测试 AngularJS 服务初始化

javascript - 按回车键切换文本字段

javascript - 带有三个按钮的弹出窗口