论证缺失&& ||括号中的运算符但仍在工作

时间:2016-02-17 12:14:35

标签: javascript syntax

我遇到过这段代码,其中if语句包含没有&&和/或||运算符的参数。

if (event.target.scrollTop > 0 !== isViewScrolled) {
    //do something
}

这怎么可能有效?括号中包含的逻辑是什么?

2 个答案:

答案 0 :(得分:3)

(event.target.scrollTop > 0返回一个bool,因此javascript只检查此bool是否等于isViewScrolled

答案 1 :(得分:1)

检查运算符优先级https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

根据以上'use strict'; angular.module('myApp', [ 'ngMaterial' ]) .config([function () { }]) .controller('mainCtrl', ['$scope', function ($scope, $mdSidenav) { $scope.soKai = 'soKai'; $scope.currentTitle = 'Maths'; $scope.appName = 'KaiAcademics'; $scope.openSideNav = function(componentId) { $mdSidenav(componentId).toggle(); } }]) ; (大于)优先级高于>(不等式)所以

!=

相当于

event.target.scrollTop > 0 !== isViewScrolled

虽然两者都是等价的,但最好包括评价顺序不明确的括号。