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 相关文章推荐
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
prototype Element学习笔记(篇二)
Oct 26 Javascript
JavaScrip单线程引擎工作原理分析
Sep 04 Javascript
父节点获取子节点的字符串示例代码
Feb 26 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
Oct 30 Javascript
jquery之别踩白块游戏的简单实现
Jul 25 Javascript
javascript创建对象的3种方法
Nov 02 Javascript
使用node.js中的Buffer类处理二进制数据的方法
Nov 26 Javascript
JS面向对象编程实现的Tab选项卡案例详解
Mar 03 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
使用webpack5从0到1搭建一个react项目的实现步骤
Dec 16 Javascript
JS高级程序设计之class继承重点详解
Jul 07 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实现的CSS更新类实例
2014/09/22 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
PHP如何将XML转成数组
2016/04/04 PHP
PHP的全局错误处理详解
2016/04/25 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
动手学习无线电
2021/03/10 无线电
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
python中list循环语句用法实例
2014/11/10 Python
Python多线程编程(五):死锁的形成
2015/04/05 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
python爬取淘宝商品销量信息
2018/11/16 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
Python之多进程与多线程的使用
2021/02/23 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
Farnell德国:电子元器件供应商
2018/07/10 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
教师个人的自我评价分享
2014/01/02 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
整改落实自查报告
2014/11/05 职场文书
五一劳动节活动总结
2015/02/09 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
学会感恩主题班会
2015/08/12 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript