如何使用Node.js REPL

目录

1、Nodejs REPL

2、_特殊变量

3、向上箭头键

4、点命令

5、从JavaScript文件运行REPL


1、Nodejs REPL

REPL代表Read-Evaluate-Print-Loop,是交互式解释器。

node命令是我们用来运行Node.js脚本的命令:

node script.js

如果我们运行node命令而没有任何脚本执行或没有任何参数,我们将启动一个REPL会话:

node

注:REPL代表Read Evaluate Print Loop,它是一个编程语言环境(基本上是一个控制台窗口),它将单个表达式作为用户输入,并在执行后将结果返回到控制台。REPL会话提供了一种快速测试简单JavaScript代码的方便方法。

如果你现在在你的终端上尝试它,会发生这样的事情:

node
Welcome to Node.js v16.16.0.
Type ".help" for more information.
> 

命令保持空闲模式,等待我们输入某些内容。

简单测试下:

> console.log(123)
123
undefined

第一个值123是我们告诉控制台打印的输出,然后我们得到undefined,这是运行console.log()的返回值。 Node读取这行代码,对其求值,打印结果,然后返回等待更多的代码行。Node将为我们在REPL中执行的每一段代码循环这三个步骤,直到我们退出会话。这就是REPL得名的原因。

Node自动打印任何一行JavaScript代码的结果,而不需要指示它这样做。例如,键入以下行并按Enter键:

> 5 === '5'
false
>

请注意以上两行的输出差异。Node REPL在执行了undefined之后打印了console.log(),而另一方面,它只打印了5 === '5'的结果。你需要记住,前者只是JavaScript中的一个语句,而后者是一个表达式。

在某些情况下,要测试的代码可能需要多行。例如,假设您要定义一个生成随机数的函数,在REPL会话中输入以下行并按Enter:

> function generateRandom() {
... console.log(123)
... }
undefined

2、_特殊变量

默认情况下,默认求值器将分配最近 将已求值表达式转换为特殊变量_(下划线)。

> generateRandom()
123
undefined
> _
undefined
>[1, 2, 3]
[1, 2, 3]
>_.length
3

3、向上箭头键

如果您按下up箭头键,您将可以访问在当前甚至以前的REPL会话中执行的前几行代码的历史记录。

4、点命令

REPL有一些特殊的命令,都以点.开头。

  • .help:显示点命令帮助
  • .editor:启用编辑器模式,轻松编写多行JavaScript代码。进入此模式后,输入ctrl-D以运行您编写的代码。
  • .break:输入多行表达式时,输入。break命令将中止进一步的输入。与按ctrl-C相同。
  • .clear:将REPL上下文重置为空对象,并清除当前正在输入的任何多行表达式。
  • .load:加载一个JavaScript文件,相对于当前工作目录
  • .save:将您在REPL会话中输入的所有内容保存到文件中(指定文件名)
  • .exit:退出repl(与按Ctrl + C两次相同)

REPL知道您何时键入多行语句,而不需要调用.editor。

例如,如果你开始输入这样的迭代:

[1, 2, 3].forEach(num => {

按enter,REPL将转到以3个点开始的新行,表示您现在可以继续处理该块了。

... console.log(num)
... })

如果在一行的末尾键入.break,多行模式将停止,语句将不会执行。

5、从JavaScript文件运行REPL

我们可以使用repl将REPL导入JavaScript文件中。

const repl = require('repl');

使用repl变量,我们可以执行各种操作。 要启动REPL命令提示符,请键入以下行

repl.start();

在命令行中运行该文件。

node repl.js
> const n = 10

您可以传递一个字符串,显示REPL何时启动。默认值是'>'(后面有一个空格),但我们可以定义自定义提示符。

// Unix 风格的提示
const local = repl.start('$ ');

您可以在退出REPL时显示一条消息

local.on('exit', () => {
  console.log('exiting repl');
  process.exit();
});

您可以在退出REPL时显示一条消息

import repl from 'repl';

const local = repl.start('$ ');

local.on('exit', () => {
    console.log('退出 repl ==========');
    process.exit();
});

打印结果:

$ node repl.js
$
退出 repl ==========

退出当前交互环境的三种方式:

1、通过快捷键:CTRL + D

2、通过快捷键:CTRL + C (连续按2次)

3、命令行输入:.exit

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26082.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity WebGL打包配置本地服务器

第一步打包 1)、先对Player Setting进行设置 2)、设置打包的窗口大小 3)、遇到异常以及压缩格式 第一个启用异常,指用户指定在运行时意外的代码行为(通常被认为错误)如何被处理,有三个选项…

3.java高级之GUI编程

1.gui (graphical user interface) awt sun公司最早的gui,不美观,不兼容各平台swing : awt升级2.顶层容器(只有一个)(其他的只能放这里)Jframe Jdialog对话框 Jwindow(x) //在main方法写fnew Jframe(); f.setSize(300,300); //设置大小f.setTitle("hello"); //设置…

【linux】web基础与HTTP协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 web基础与HTTP协议 一、DNS/HTML1.域名的概述2.域名注册3.网页的概念4.HTML概述5.网页基本标签 二、web基础1.web概述2.静态网页3.静态网页特点4.动态网页5.动态网页的特点 三…

redis数据持久化

Redis是基于内存的,如果不想办法将数据保存在硬盘上,一旦Redis重启(退出/故障),内存的数据将会全部丢失。(业务库中缓存的数据 , 存储的一些重要的标签, 状态数据) 我们肯定不想Redis里头的数据由于某些故障全部丢失(导致所有请求都走MySQL)&…

python基础----05-----函数的多返回值、函数的多种参数使用形式、函数作为参数传递、lambda匿名函数

一 函数的多返回值 if __name__ __main__:# 演示使用多个变量,接收多个返回值def test_return ():return 1,hello,Truex,y,z test_return()print(x)print(y)print(z)1helloTrue二 函数的多种参数使用形式 分为以下四种。 2.1 位置参数 位置参数调用函数时根据…

大数据分析案例-基于决策树算法构建世界杯比赛预测模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【计算机网络详解】——应用层(学习笔记)

📖 前言:应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分。在本文中,我们以一些经典的网络应用为例来学习有关网络应用的原理、协议和实现方面的知识。 目录 &a…

12.数据结构之AVL树

前言 提到平衡二叉查找树,不得不提二叉查找树。二叉查找树,说简单点,其实就是将我们的数据节点,有序的维护为一个树形结构。这样我们查的时候,那么我们查找某个节点在不在集合中的时间复杂度实际上就是树的高度。如果…

HNU-操作系统OS-实验Lab7

OS_Lab7_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf (学号 202108010XXX) 实验目的 理解操作系统的同步互斥的设计实现;理解底层支撑技术:禁用中断、定时器、等待队列;在ucore中理解信号量(semaphore)机制的具体实现;理解管程机制,在ucore内…

在linux服务器中对R语言中for循环设置多核运行

1 问题 在R中构建了for循环,由于循环过多,运行速度过慢,且不同循环之间是并行关系,拟通过多核运行可以解决此问题。 2 代码设置 2.1 shell脚本中的设置 b.sh export OPENBLAS_NUM_THREADS8Rscript ./..._1.R \2.2 R代码中的设…

python数据可视化-matplotlib学习总结

目录 (一)常见的图形 1、趋势图(直线图):plot() 2、散点图:scatter(): (二)统计图形 1、柱状图:bar( 2、条形图:barh() 3、直方图&#xff…

【ZLM】ZLM源码阅读一

目录 初始化 RTP RTSP RTMP TCPServer的初始化 参考文档 初始化 RTP RTSP RTMP TCPServer的初始化 参考文档 本文参考: (17条消息) 《ZLToolKit源码学习笔记》(20)网络模块之TcpServer_秦时小的博客-CSDN博客 RTP https://blog.csdn.…

探秘 | 如何分辨内网和外网?

目录 💡 什么是外网IP、内网IP? 💡 对于自有路由器上网的用户,可以这样理解外网IP、内网IP 💡 几个大家经常会问的问题 什么是外网IP、内网IP?很多用户都有一个疑惑,如果不使用路由器拨号上网…

Redis实现分布式锁的原理:常见问题解析及解决方案、源码解析Redisson的使用

0、引言:分布式锁的引出 锁常常用于多线程并发的场景下保证数据的一致性,例如防止超卖、一人一单等场景需求 。通过加锁可以解决在单机情况下安全问题,但是在集群模式下就不行了。集群模式,即部署了多个服务器、并配置了负载均衡后…

ChatGPT 使用 拓展资料:2023年6月 吴恩达大咖Deeplearning.ai最新课程

ChatGPT 使用 拓展资料:2023年6月 吴恩达大咖Deeplearning.ai最新课程 Deeplearning.ai刚刚发布几个新的课程https://www.deeplearning.ai/short-courses/?utm_campaign=May%20Short%20Course%20Launch&utm_content=250952287&utm_medium=social&utm_source=link…

汽车出海势头旺,汽车零部件企业如何破浪前行?

随着国内汽车市场逐渐饱和,中国汽车企业开始寻求“汽车出海”的新市场增长点。在政府加大汽车出海政策支持力度下,根据中汽协数据,一季度的新能源汽车出口达24.8万辆,同比增长1.1倍。中国汽车行业持续深耕海外市场,出口…

SQL server入门一【简单介绍与简单建表】

SQLserver登录方式 Windows身份验证 用户名登录 通常登录名为sa,密码为下载时设置的密码 SQL server建立一个数据库 数据库中建表存储数据(输入命令建表) 数据库的简单介绍与概念 含义 可以对数据进行存储和管理的软件以及数据本身统称为数据库 组成 数据库由表…

微服务架构之RPC调用

在单体应用时,一次服务调用发生在同一台机器上的同一个进程内部,也就是说调用发生在本机内部,因此也被叫作本地方法调用。在进行服务化拆分之后,服务提供者和服务消费者运行在两台不同物理机上的不同进程内,它们之间的…

自建极简Ethercat主站-底层驱动编写

1、简介 MECM(Mini Ethercat Master),名字随便起的。已经学习了一段时间的Ethercat总线了,目前的想法就是自己简单实现一个Ethercat主站,没有太多的冗余功能,暂时不考虑太多的容错机制,仅实现目前用到的FO…

性能测试监控平台:InfluxDB+Grafana+Jmeter

前言 性能测试工具jmeter自带的监视器对性能测试结果的实时展示,在Windows系统下的GUI模式运行,渲染和效果不是太好,在linux环境下又无法实时可视化。 2023年最新出炉性能测试教程,真实企业性能压测全流程项目实战训练大合集&am…