Blogger Information
Blog 110
fans 0
comment 0
visits 112233
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
你可能不知道的JavaScript代码调试技巧——tap
Coco
Original
800 people have browsed it

  function tap(x) {

  console.log(x);

  return x;

  }

  没错,就是这样一个函数,或许能帮助你很多!为什么我们不用 console.log 这个老方式了?让我来示范例子

  bank_totals_by_client(bank_info(1, banks), table)

  .filter(c=> c.balance > 25000)

  .sort((c1, c2)=> c1.balance <=c2.balance ? 1 : -1 )

  .map(c=>

  console.log(`${c.id} | ${c.tax_number} (${c.name})=> ${c.balance}`));

  现在,假如你从这个链式调用中没有得到任何返回。 在哪里出了问题呢?或许 bank_info 没有返回值,我们需要监听(tap)它:

  bank_totals_by_client(tap(bank_info(1, banks)), table)

  基于我们特殊的实现,它可能会打印一些东西,也可能什么也不打印。 我们假设,打印出来的东西是正确的,因此, bank_info 没有问题。

  我们需要继续调试下一个函数, filter.

  .filter(c=> tap(c).balance > 25000)

  我们可以得到 c 吗?如果可以,说明 bank_totals_by_client 运行正常。 可能是 filter 内地条件有问题?

  .filter(c=> tap(c.balance > 25000))

  这里假如我们发现除了 false 没有打印其他东西,所以也说明没有一个 client >25000, 这就是为什么方法什么也没返回的原因。

  更先进的 tap

  function tap(x, fn=x=> x) {

  console.log(fn(x));

  return x;

  }

  让我们来看一下一个更强大的方法,如果我们想在监听(tap)之前事先做一些操作应该怎么办?比如,我们只想方位某个对象特定的参数,位于一个逻辑运算,等等。使用上面的方法,在调用的时候增加一个额外参数,这个函数在被监听(tap)的时候就会被执行。

  tap(3, x=> x + 2)===3;

  思考:这个地方打印了5,但是表达式返回值是true,?

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post