#定义

assert 函数的通常含义是,如果传递到函数中的表达式为false,则抛出错误;这是断言检查的一般概念的一部分。通常断言(正如它们被称为)只在“测试”或“调试”构建中使用,并从生产代码中剥离出来
##javascript的断言

const a = 1;
 console.assert(typeof a === 'Number', '这是应该是一个数字类型')

###vue中也有封装的断言函数

// Vuex源码中的工具函数
  function assert (condition, msg) {
    if (!condition) {
      throw new Error(`[Vuex] ${msg}`)
    }
  }

##简单的例子

function assert(condition, message) {
    if (!condition) {
        throw message || "Assertion failed";
    }
}

#补充
###正则的断言

假如目标字符串后边有条件,可以理解为目标字符串在前,就用先行断言,放在目标字符串之后。
假如目标字符串前边有条件,可以理解为目标字符串在后,就用后发断言,放在目标字符串之前。
假如指定满足某个条件,就是正。
假如指定不满足某个条件,就是负。
断言只是条件,帮你找到真正需要的字符串,本身并不会匹配!

(?=X )
零宽度正先行断言。仅当子表达式 X 在 此位置的右侧匹配时才继续匹配。例如,/w+(?=/d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
(?!X)
零宽度负先行断言。仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,例如,/w+(?!/d) 与后不跟数字的单词匹配,而不与该数字匹配 。
(?<=X)
零宽度正后发断言。仅当子表达式 X 在 此位置的左侧匹配时才继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
(?<!X)
零宽度负后发断言。仅当子表达式 X 不在此位置的左侧匹配时才继续匹配。例如,(?<!19)99 与不跟在 19 后面的 99 的实例匹配

const r1 = /\w+(?=\d+)/;
const r2 = /(?<=http)\w+/;
const r3 = /www(?!com)/;
const r4 = /(?<!api)data/