如何在 Node REPL 中编写多行代码
How to write multiple lines of code in Node REPL
我要评价
var foo = "foo";
console.log(foo);
作为一个块,而不是逐行评估
var foo = "foo";
undefined
console.log(foo);
foo
undefined
有没有简单的方法可以将提示移到下一行?
您可以使用 if(1){
开始一个块,该块在您输入 }
之前不会完成。它将打印块最后一行的值。
> {
... var foo = "foo";
... console.log(foo);
... }
foo
undefined
在多行模式下,您会错过很多 REPL 的优点,例如自动完成和语法错误的即时通知。如果由于块中的某些语法错误而陷入多行模式,请使用 ^C
到 return 到正常提示。
Node v6.4 具有 editor
模式。在 repl 提示符下键入 .editor
,您可以输入多行。
例子
$ node
> .editor
// Entering editor mode (^D to finish, ^C to cancel)
const fn = there => `why hello ${there}`;
fn('multiline');
// hit ^D
'why hello multiline'
> // 'block' gets evaluated and back in single line mode.
这是所有特殊 repl 命令的文档
https://nodejs.org/api/repl.html#repl_commands_and_special_keys
jhnstn 的解决方案是完美的,但如果您正在寻找其他替代方案,您可以将代码放在多行字符串中,然后 eval
像这样:
> let myLongCode = `
... let a = 1;
... let b = 2;
... console.log(a + b);
... `;
> eval(myLongCode)
> 3
当然这是一个黑客 ;)
Node.js REPL 支持块并且能够 return 块中的最后一个表达式,其他一些控制台实现也是如此(Chrome devtools 控制台)。
这可能会导致语法错误,这是 Node 10.9.0 中的重大更改。 {
可能是一个对象字面量,一个块不能被明确地评估为一个块:
{
var foo = "foo";
console.log(foo);
}
虽然这可以被明确地评估为一个块并且将 return undefined
:
;{
var foo = "foo";
console.log(foo);
}
由于记录了块中的最后一个表达式,因此此处不需要 console.log
:
;{
var foo = "foo";
foo;
}
注意这是块作用域,所以 let
、const
和 class
不会泄漏到 REPL 作用域,这种行为可能是可取的也可能不是。
可能是我没看懂问题,但是如果你想在repl的控制台写多行命令,你可以使用shift+enter移动到下一行。
我要评价
var foo = "foo";
console.log(foo);
作为一个块,而不是逐行评估
var foo = "foo";
undefined
console.log(foo);
foo
undefined
有没有简单的方法可以将提示移到下一行?
您可以使用 if(1){
开始一个块,该块在您输入 }
之前不会完成。它将打印块最后一行的值。
> {
... var foo = "foo";
... console.log(foo);
... }
foo
undefined
在多行模式下,您会错过很多 REPL 的优点,例如自动完成和语法错误的即时通知。如果由于块中的某些语法错误而陷入多行模式,请使用 ^C
到 return 到正常提示。
Node v6.4 具有 editor
模式。在 repl 提示符下键入 .editor
,您可以输入多行。
例子
$ node
> .editor
// Entering editor mode (^D to finish, ^C to cancel)
const fn = there => `why hello ${there}`;
fn('multiline');
// hit ^D
'why hello multiline'
> // 'block' gets evaluated and back in single line mode.
这是所有特殊 repl 命令的文档 https://nodejs.org/api/repl.html#repl_commands_and_special_keys
jhnstn 的解决方案是完美的,但如果您正在寻找其他替代方案,您可以将代码放在多行字符串中,然后 eval
像这样:
> let myLongCode = `
... let a = 1;
... let b = 2;
... console.log(a + b);
... `;
> eval(myLongCode)
> 3
当然这是一个黑客 ;)
Node.js REPL 支持块并且能够 return 块中的最后一个表达式,其他一些控制台实现也是如此(Chrome devtools 控制台)。
这可能会导致语法错误,这是 Node 10.9.0 中的重大更改。 {
可能是一个对象字面量,一个块不能被明确地评估为一个块:
{
var foo = "foo";
console.log(foo);
}
虽然这可以被明确地评估为一个块并且将 return undefined
:
;{
var foo = "foo";
console.log(foo);
}
由于记录了块中的最后一个表达式,因此此处不需要 console.log
:
;{
var foo = "foo";
foo;
}
注意这是块作用域,所以 let
、const
和 class
不会泄漏到 REPL 作用域,这种行为可能是可取的也可能不是。
可能是我没看懂问题,但是如果你想在repl的控制台写多行命令,你可以使用shift+enter移动到下一行。