Is there something like has_no_term

Use get_the_terms().

if (false === get_the_terms( $post_id, 'post_tag' )) {
  // has no post tags at all
}

I am not sure there is an existing core function to test specifically for the absence of any term at all including custom taxonomies but you can pass an array of taxonomies as the second parameter, meaning you could use get_taxonomies() to do:

if (false === get_the_terms( $post_id, get_the_terms( 1, get_taxonomies('','names') ) )) {
  // has no post tags at all
}

$post_id must be set to the a post ID to be checked for terms.