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 相关文章推荐
在js中单选框和复选框获取值的方式
Nov 06 Javascript
JavaScript 闭包在封装函数时的简单分析
Nov 28 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
Nov 12 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
Apr 15 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
Jan 05 Javascript
微信小程序实现发红包功能
Jul 11 Javascript
vue自定义tap指令及tap事件的实现
Sep 18 Javascript
vue 实现移动端键盘搜索事件监听
Nov 06 Javascript
微信小程序实现上拉加载功能
Nov 20 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
Dec 01 Javascript
如何利用node转发请求详解
Sep 17 Javascript
Javascript新手入门之字符串拼接与变量的应用
Dec 03 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 分页类 扩展代码
2009/06/11 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
python 调用c语言函数的方法
2017/09/29 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
flask框架中的cookie和session使用
2021/01/31 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
建筑行业的大学生自我评价
2013/12/08 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
一般党员对照检查材料
2014/09/24 职场文书
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python