1. Depuração com cromo (node.js)
exemplo:
const fs = require('fs/promises');
(async function() {
const fileContent = await fs.readFile('./package.json', {
encoding: 'utf-8'
});
await fs.writeFile('./package2.json', fileContent);
})();
1. Primeiro execute o nó index.js:
2. Em seguida, inicie no modo de depuração, adicione um parâmetro --inspect-brk:
node --inspect-brk ./index.js
--inspect é iniciado no modo de depuração, --inspect-brk é iniciado no modo de depuração e quebra na primeira linha.
3. O servidor depurado é como mostrado na figura acima: a parte destacada em vermelho
Em seguida, depure o nodejs com o Chrome:
Abra chrome://inspect/#devices , e todos os alvos que podem ser depurados estão listados abaixo, ou seja, o servidor ws:
O serviço de depuração de nó é executado na porta 9229 por padrão, mas também pode ser alterado
Basta adicionar sua porta à configuração:
Clique em inspecionar para depurar
2. Depuração com VsCode (node.js)
1、
2、
3、
A primeira linha está quebrada, você pode adicionar uma configuração stopOnEntry:
4, você pode depurar
Três, nove tipos de escopo JS
Escopo global : escopo global, que é janela no ambiente do navegador e global no ambiente do nó
Escopo local : escopo local ou escopo de função
Escopo do script : variáveis globais declaradas por let e const serão salvas no escopo do script, essas variáveis podem ser acessadas diretamente, mas não podem ser acessadas através de window.xx
Escopo do módulo : Na verdade, estritamente falando, este também é um escopo de função, porque quando o nó o executa, ele envolverá uma camada de funções, que é um escopo de função especial, com variáveis como módulo, exporta e requer
Escopo do Bloco Catch : O escopo da instrução catch tem acesso ao objeto de erro
With Block 作用域:with 语句会把传入的对象的值放到单独的作用域里,这样 with 语句里就可以直接访问了
Closure 作用域:函数返回函数的时候,会把用到的外部变量保存在 Closure 作用域里,这样再执行的时候该有的变量都有,这就是闭包。eval 的闭包比较特殊,会把所有变量都保存到 Closure 作用域
Eval 作用域:eval 代码声明的变量会保存在 Eval 作用域