DoneJS StealJS jQuery++ FuncUnit DocumentJS
5.33.3
6.0.0 4.3.0 3.14.1 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-bind
      • can-compute
      • can-debug
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-backup
      • can-define-stream
      • can-define-stream-kefir
      • can-event-queue
      • can-kefir
      • can-list
      • can-map
      • can-map-compat
      • can-map-define
      • can-observable-array
      • can-observable-object
      • can-observation
      • can-observation-recorder
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
      • can-value
    • Views
      • can-attribute-observable
      • can-component
      • can-stache
      • can-stache-bindings
      • can-stache-converters
      • can-stache-element
      • can-stache-route-helpers
      • can-view-autorender
      • can-view-callbacks
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • steal-stache
    • Data Modeling
      • can-connect
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-tag
      • can-fixture
      • can-fixture-socket
      • can-local-store
      • can-memory-store
      • can-ndjson-stream
      • can-query-logic
        • prototype
          • count
          • difference
          • filterMembers
          • filterMembersAndGetCount
          • identityKeys
          • index
          • intersection
          • isDefinedAndHasMembers
          • isEqual
          • isMember
          • isProperSubset
          • isSpecial
          • isSubset
          • union
          • unionMembers
        • query format
          • Query
          • Comparison Operators
        • static methods
          • defineComparison
          • set.difference
          • set.intersection
          • set.union
        • static types
          • EMPTY
          • KeysAnd
          • UNDEFINABLE
          • UNIVERSAL
          • UNKNOWABLE
          • makeEnum
      • can-realtime-rest-model
      • can-rest-model
      • can-set-legacy
      • can-super-model
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-hash
      • can-route-mock
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-diff
      • can-globals
      • can-join-uris
      • can-key
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-queues
      • can-string
      • can-string-to-any
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-child-nodes
      • can-control
      • can-dom-data
      • can-dom-events
      • can-dom-mutate
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-fragment
    • Data Validation
      • can-define-validate-validatejs
      • can-type
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-data-types
      • can-namespace
      • can-reflect
      • can-reflect-dependencies
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

UNDEFINABLE

  • Edit on GitHub

Represents a set that contains values, but can not be defined and is not the UNIVERSAL set.

Object

Use QueryLogic.UNDEFINABLE to represent that a set exists, but it can not be represented by the available set types. For example, consider performing a difference of people in Chicago compared to people named Justin who are 35:

import {QueryLogic} from "can";

const inChicago = new QueryLogic.KeysAnd( {location: "Chicago"} );
const isJustinAnd35 = new QueryLogic.KeysAnd( {name: "Justin", age: 35} );

const undefinable = QueryLogic.difference(inChicago, isJustinAnd35);
console.log( undefinable ); //-> QueryLogic.UNDEFINABLE

If QueryLogic supported a Not and an expanded ValueAnd type, the difference could be described as:

import {QueryLogic} from "can";

const inChicago = new QueryLogic.KeysAnd( {location: "Chicago"} );
const isJustinAnd35 = new QueryLogic.KeysAnd( {name: "Justin", age: 35} );

const undefinable = new QueryLogic.ValueAnd([
  inChicago,
  new QueryLogic.Not(isJustinAnd35)
]);
console.log( undefinable );

Currently, as QueryLogic does not fully support Not and ValueAnd used this way, it returns QueryLogic.UNDEFINABLE. This indicates a difference exists (the existence of a difference is important for determining superset and subset), but we aren't able to express it.

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 5.33.3.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news