node.js学习之交互式解释器REPL详解


Posted in Javascript onDecember 08, 2016

简介

repl是Node.js提供的一个Read-Eval-Print-Loop (REPL,读取-执行-输出-循环)实现,它即可以做为一个独立的程序使用,又可以包含在其它应用中使用。REPL是一个互式命令行解析器,它提供了一个交互式的编程环境,它可以实时的验证你所编写的代码,非常适合于验证Node.js和JavaScript的相关API。

Node 自带了交互式解释器,可以执行以下任务:

     读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。

     执行 - 执行输入的数据结构

     打印 - 输出结果

     循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。

Node 的交互式解释器可以很好的调试 Javascript 代码。

REPL既可以作为独立单机程序,也可以被其他的程序包含在内的程序。

它提供了一种交互方式,即“执行程序,展现结果”。

它可以被用作debugging,testing 或者只是执行操作得到一些结果。

执行REPL

打开命令行,到达node.js安装的目录,键入node

$ node
>

会看到REPL命令提示符>在这里你可以输入任何Node.js的命令。

1)、简单表达式

让我们尝试在Node.js的REPL命令提示符下完成简单的数学计算:

$ node
> 2 + 3
> 2 + ( 2 * 3 ) - 4
>

注意: > 是REPL命令的提示符。

2)、使用变量

你可以将数据存储在变量中,并在你需要的使用它。

变量声明需要使用 var 关键字,如果没有使用 var 关键字变量会直接打印出来。

使用 var 关键字的变量可以使用 console.log() 来输出变量。

$ node
> x = 10
> var y = 10
undefined
> x + y
> console.log("Hello World")
Hello World
undefined

3)、多行表达式

Node REPL 支持输入多行表达式,这就有点类似 JavaScript。

接下来让我们来执行一个 do-while 循环:

$ node
> var x = 0
undefined
> do {
... x++;
... console.log("x: " + x);
... } while ( x < 5 );
x: 1
x: 2
x: 3
x: 4
x: 5
undefined
>

... 三个点的符号是系统自动生成的,你回车换行后即可。Node 会自动检测是否为连续的表达式。

4)、使用函数

> var name="aaa"
undefined
> name
'aaa'
> function getName(){
... console.log(this.name);
... }
undefined
> getName()
aaa
undefined

因为REPL环境内部使用eval函数来评估该表达式的执行结果,所以有些东西我们可以直接这样写,如对象:

> {a:1,b:2}
{ a: 1, b: 2 }

> [1,2,3,4,5]
[ 1, 2, 3, 4, 5 ]

5)、下划线_

使用_可以指代上一次的操作执行后的值,比如

对象:

> {a:2,b:3}
{ a: 2, b: 3 }
> for(var key in _){
... console.log("key="+key+",value="+_[key]);
... }
key=a,value=2
key=b,value=3
undefined

数组:

> {a:2,b:3}
{ a: 2, b: 3 }
> for(var key in _){
... console.log("key="+key+",value="+_[key]);
... }
key=a,value=2
key=b,value=3
undefined

正确的结果:

> [1,2,3,4,5]
[ 1, 2, 3, 4, 5 ]   //数组
> Object.keys(_).map(function(k){return _[k]*_[k]})
[ 1, 4, 9, 16, 25 ]   //元素值

3、REPL命令

ctrl + c - 终止当前命令

ctrl + c twice - 终止Node REPL

ctrl + d - 终止Node REPL

Up/Down Keys - 查看命令历史记录和修改以前的命令

tab Keys - 当前指令的列表

help - 所有命令的列表

break - 退出多行表达式

clear - 从多行表达退出

save filename - 当前Node REPL会话保存到文件中

load filename - 加载文件的内容在当前Node REPL会话

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
25个好玩的JavaScript小游戏分享
Apr 22 Javascript
javascript框架设计读书笔记之数组的扩展与修复
Dec 02 Javascript
c#程序员对TypeScript的认识过程
Jun 19 Javascript
js图片跟随鼠标移动代码
Nov 26 Javascript
jQuery解析json格式数据简单实例
Jan 22 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
Apr 23 Javascript
JavaScript自定义文本框光标
Mar 05 Javascript
关于axios如何全局注册浅析
Jan 14 Javascript
jquery写出PC端轮播图实例
Jan 26 jQuery
图片文字识别(OCR)插件Ocrad.js教程
Nov 26 Javascript
关于Layui Table隐藏列问题
Sep 16 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
Dec 08 #Javascript
JS中用childNodes获取子元素换行会产生一个子元素
Dec 08 #Javascript
微信公众号 摇一摇周边功能开发
Dec 08 #Javascript
Vue概念及常见命令介绍(1)
Dec 08 #Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
Dec 08 #Javascript
jquery二级目录选中当前页的css样式
Dec 08 #Javascript
wap手机端解决返回上一页的js实例
Dec 08 #Javascript
You might like
如何在php中正确的使用json
2013/08/06 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
php判断表是否存在的方法
2015/06/18 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
用Python实现一个简单的线程池
2015/04/07 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
简单了解Python write writelines区别
2020/02/27 Python
Python实现AI换脸功能
2020/04/10 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
linux面试题参考答案(4)
2014/09/21 面试题
行政部工作岗位职责范本
2014/03/05 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
演讲开场白和结束语
2015/05/29 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
Java实现简单小画板
2022/06/10 Java/Android