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 相关文章推荐
JavaScript 判断日期格式是否正确的实现代码
Jul 04 Javascript
js检测网络是否具体连接功能的代码
May 23 Javascript
Javascript中Array.prototype.map()详解
Oct 22 Javascript
js获取Html元素的实际宽度高度的方法
May 19 Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
JavaScript实现弹窗效果代码分析
Mar 09 Javascript
windows下vue.js开发环境搭建教程
Mar 20 Javascript
js HTML5 canvas绘制图片的方法
Sep 08 Javascript
javascript高级模块化require.js的具体使用方法
Oct 31 Javascript
详解webpack 入门与解析
Apr 09 Javascript
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 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微信公众平台开发(一) 配置接口
2016/12/06 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
2017/04/10 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
深入理解es6块级作用域的使用
2019/03/28 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Mac 上切换Python多版本
2017/06/17 Python
python递归下载文件夹下所有文件
2019/08/31 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
如何在python中写hive脚本
2019/11/08 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
小学生毕业评语
2014/12/26 职场文书
个人工作年终总结
2015/03/09 职场文书
学校党支部承诺书
2015/04/30 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
导游词幽默开场白
2019/06/26 职场文书