В приведенной выше функции xor это приведет к SIMILAR результату, поскольку логический xor не совсем логический xor, означает, что он приведет к "false для равных значений" и "true для различные значения " с учетом соответствия типа данных.
Эта функция xor будет работать как фактический xor или логический оператор , что означает, что она будет иметь значение true или false в соответствии с передаваемыми значениями truey или false . Используйте в соответствии с вашими потребностями
function xor(x,y){return true==(!!x!==!!y);}
function xnor(x,y){return !xor(x,y);}