如何使用Node.js REPL

news2024/11/26 18:22:58

目录

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python数据处理中如何选取指定范围的数据

Python数据处理中如何选取指定范围的数据 Python已经成为了数据科学家和工程师的标配,尤其在数据处理和数据分析中,Python具有广泛的应用。在数据处理中,选取指定范围的数据是一个很重要的功能。本文将介绍Python中如何实现指定范围的数据选…

SpringBoot——原理(起步依赖+自动配置(概述和案例))

在Spring家族中提供了很多优秀的框架,所有的框架都是基于同一个基础框架——Spring Framework. 使用spring框架开发麻烦的一批,光是搞依赖和配置就够人喝一壶了。因此在spring4.0版本之后又推出了springboot框架。springboot框架用起来比spring框架简单…

chatgpt赋能python:Python行长度的重要性及最佳实践

Python 行长度的重要性及最佳实践 Python 行长度的重要性 对于一门编程语言而言,行长度是指每一行代码的字符数,Python 也不例外。同时,Python 的行长度限制也是相当明确的,官方建议不要超过 79 个字符,而 PEP 8 规范…

【编译、链接、装载一】预处理、编译、汇编、链接

【编译和链接一】预处理、编译、汇编、链接 一、被隐藏了的过程二、预处理器(Prepressing)——cpp1、预处理指令2、预处理过程3、预处理生成的hello.i文件 三、编译器(Compilation)——cc1、编译指令2、编译的过程3、编译生成的文…

chatgpt赋能python:Python读取Mat文件的完整教程

Python 读取Mat文件的完整教程 在数据科学领域,Matlab(或简称Mat)是最受欢迎的编程语言之一。Matlab可用于数学计算、数据预处理、建模和数据分析。然而,Matlab的开销和许可证成本会限制公司和个人的使用。因此,Pytho…

渗透必学神器:BurpSuite教程(一)

0x00 前言 Burp Suite (简称BP,下同)是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。 从本节开始将为大家陆续带来BP各个模块的使用说明 0x01 中间人攻击 中间人攻击&am…

ChatGPT | Bing | Google Bard | 讯飞星火 | 到底哪家强?实测

最近AIGC战场依然热闹,微软的new bing、Google的Bard、国内的讯飞星火认知大模型,都接连上阵,我们对比ChatGPT一起来看看,我把实际使用测试结果发出,供大家参考。有些测试结果可能会出乎大家的预料哦… 今天我们暂时主…

第十四章 (Set)

一、Set 接口(P518) 1. Set 接口基本介绍 (1)无序(添加和取出的顺序不一致),没有索引。 (2)不允许重复元素,所以最多包含一个 null。 2. Set 接口的常用方法…

阿里云服务器ECS云盘扩容

前言 对于云服务器,相信大多数开发的铁子们都玩过,但是云盘爆满的情况,对于新手或者没有自己运营业务的铁子们,平台给的初始容量也不算小,所以这种情况碰到的概率还是比较小。由于我的服务器应用的复杂度随着业务的发…

ubuntu安装搜狗输入法,图文详解+踩坑解决

搜狗输入法已支持Ubuntu16.04、18.04、19.10、20.04、20.10,本教程系统是基于ubuntu18.04 一、添加中文语言支持 系统设置—>区域和语言—>管理已安装的语言—>在“语言”tab下—>点击“添加或删除语言”。 弹出“已安装语言”窗口,勾选中文…

chatgpt赋能python:Python在SEO领域的优势

Python在SEO领域的优势 Python作为一种高效、灵活的编程语言,已经被广泛应用于多个领域,包括Web应用、数据科学、自然语言处理等。在SEO领域,Python也有其独特的优势。 爬虫 Python强大的爬虫库和框架,如BeautifulSoup、Scrapy…

chatgpt赋能python:Python行列转换教程:如何轻松实现行列转换

Python行列转换教程:如何轻松实现行列转换 在数据处理和分析中,经常需要将行和列进行转换。Python是一种优秀的编程语言,提供了多种方法来实现行列转换。在本教程中,我们将介绍如何使用Python实现行列转换,并提供简单…

《Spring Guides系列学习》guide66 - guide68及小结

要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的gui…

深入了解Golang中的反射机制

目录 反射 反射的分类 值反射 类型反射 运行时反射 编译时反射 接口反射 结构体反射 常用函数 值反射 类型反射 值反射和类型反射的区别 结构体反射 示例代码 反射 反射是指在程序运行时动态地检查和修改对象的能力。在Go语言中,通过反射可以在运行时…

chatgpt赋能python:Python逆序对:什么是逆序对,如何使用Python进行逆序对计算?

Python逆序对&#xff1a;什么是逆序对&#xff0c;如何使用Python进行逆序对计算&#xff1f; 在计算机科学中&#xff0c;逆序对是指在一个数组中&#xff0c;如果存在下标i < j&#xff0c;但是a[i] > a[j]&#xff0c;则a[i]和a[j]构成一个逆序对。逆序对对于理解和…

pthread多线程:传入参数并检查 data race

文章目录 1. 目的2. 给子线程传入参数&#xff1a;万能类型 void*3. data race3.1 什么是 data race3.2 怎样检测 data race 4. data race 的例子4.1 子线程传入同一个 data4.2 使用栈内存 5. 解决 data race 问题5.1 忽视问题&#xff1f;5.2 避开同一个变量的使用5.3 使用互斥…

Office project 2010安装教程

哈喽&#xff0c;大家好。今天一起学习的是project 2010的安装&#xff0c;Microsoft Office project项目管理工具软件&#xff0c;凝集了许多成熟的项目管理现代理论和方法&#xff0c;可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…

每天一道面试题之String str=“i“与 String str=new String(“i”)一样吗?

String str"i"与 String strnew String(“i”)一样吗&#xff1f; 要想知道二者是否一样&#xff0c;我们只需要通过进行比较&#xff0c;为什么不用equals的原因&#xff0c;大家可以认真阅读这篇文章 测试代码如下&#xff1a; public class Test1 {public stati…

chatgpt赋能python:Python选择器:优化你的SEO

Python 选择器&#xff1a;优化你的SEO 介绍 随着搜索引擎优化(SEO)变得越来越重要&#xff0c;Web 开发人员需要采取各种措施来提高网站的搜索排名。其中之一就是通过使用正确的 HTML 标签和优秀的内容来提高搜索引擎爬虫对网站的理解。这时候 Python 选择器就变得尤为重要。…

chatgpt赋能python:Python选择函数

Python 选择函数 Python是一种流行的编程语言&#xff0c;是许多开发人员的首选。在Python中&#xff0c;有许多函数可供开发人员使用。这些函数不仅提高了开发的速度&#xff0c;而且还可以帮助我们更快地解决许多问题。在本文中&#xff0c;我们将重点介绍Python选择函数。 …