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 08 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
noty ? jQuery通知插件全面解析
May 18 Javascript
react 父组件与子组件之间的值传递的方法
Sep 14 Javascript
javascript中神奇的 Date对象小结
Oct 12 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
Mar 24 Javascript
基于mpvue的小程序项目搭建的步骤
May 22 Javascript
微信小程序修改swiper默认指示器样式的实例代码
Jul 18 Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
flexible.js实现移动端rem适配方案
Apr 07 Javascript
js实现列表按字母排序
Aug 11 Javascript
原生JavaScript实现五子棋游戏
Nov 09 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 array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
新闻内页-JS分页
2006/06/07 Javascript
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
python word转pdf代码实例
2019/08/16 Python
python实现吃苹果小游戏
2020/03/21 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
考试作弊检讨书大全
2014/02/18 职场文书
小学班主任评语大全
2014/04/23 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
vue+iview实现手机号分段输入框
2022/03/25 Vue.js