Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nodejs教程11:assert(断言)模块 #42

Open
chencl1986 opened this issue Mar 18, 2019 · 0 comments
Open

Nodejs教程11:assert(断言)模块 #42

chencl1986 opened this issue Mar 18, 2019 · 0 comments

Comments

@chencl1986
Copy link
Owner

阅读更多系列文章请访问我的GitHub博客,示例代码请访问这里

assert的用途

assert(断言)通常用来对代码进行校验,若出错则阻止程序运行,并抛出一个错误。

assert的用法

示例代码:/lesson11/assert.js

尝试运行如下代码:

const assert = require('assert')

assert(2 > 1, '2 > 1')

assert(1 > 2, '1 > 2')

代码在运行到assert(2 > 1, '2 > 1')时,由于2 > 1为true,此时不会抛出错误。

而运行到assert(1 > 2, '1 > 2')时,由于1 > 2为false,此时会抛出错误如下:

AssertionError [ERR_ASSERTION]: 1 > 2
    at Object.<anonymous> (C:\projects\nodejs-tutorial\lesson11\assert.js:5:1)
    at Module._compile (internal/modules/cjs/loader.js:734:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:745:10)
    at Module.load (internal/modules/cjs/loader.js:626:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
    at Function.Module._load (internal/modules/cjs/loader.js:558:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:797:12)
    at executeUserCode (internal/bootstrap/node.js:526:15)
    at startMainThreadExecution (internal/bootstrap/node.js:439:3)

提示了在\lesson11\assert.js的第5行有一个错误,同时将错误信息1 > 2抛出,并终止代码的运行。

assert的使用方式

通常可以在一个模块或函数的每个阶段使用assert,或者在对函数传参进行assert校验,以保证代码运行的正确性。

assert.deepStrictEqual

assert.deepStrictEqual(actual, expected[, message])用于对actual 参数和 expected的深度比较,即不仅校验它们是否相等,同时也要校验它们的成员之间是否相等。

assert.deepStrictEqual在校验对象或数组时比较有用。

assert.deepStrictEqual的比较相当于===,也就是不仅是值相等,值的类型也要相等。

assert.deepStrictEqual的用法

  1. 使用assert.deepStrictEqual比较对象:

示例代码:/lesson11/assert.deepStrictEqual.object.js

const assert = require('assert')

const obj1 = {
  a: 1,
  b: 2,
  children: {
    c: 3
  }
}

const obj2 = {
  a: 1,
  b: 2,
  children: {
    c: 3
  }
}

const obj3 = {
  a: 1,
  b: 2,
  children: {
    c: '3'
  }
}

assert.deepStrictEqual(obj1, obj2, 'obj1 !== obj2')

assert.deepStrictEqual(obj1, obj3, 'obj1 !== obj3')

代码会抛出错误:obj1 !== obj3。

  1. 使用assert.deepStrictEqual比较数组:

示例代码:/lesson11/assert.deepStrictEqual.array.js

const assert = require('assert')

const arr1 = [{
  a: 1,
  b: 2,
  children: [{
    c: 3
  }]
}]

const arr2 = [{
  a: 1,
  b: 2,
  children: [{
    c: 3
  }]
}]

const arr3 = [{
  a: 1,
  b: 2,
  children: [{
    c: '3'
  }]
}]

assert.deepStrictEqual(arr1, arr2, 'arr1 !== arr2')

assert.deepStrictEqual(arr1, arr3, 'arr1 !== arr3')

代码会抛出错误:arr1 !== arr3。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant