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 必知必会之closure
Sep 21 Javascript
JavaScript面向对象之静态与非静态类
Feb 03 Javascript
js实时监听文本框状态的方法
Apr 26 Javascript
javascript鼠标滑动评分控件完整实例
May 13 Javascript
浅谈JavaScript字符串与数组
Jun 03 Javascript
AngularJS使用ngMessages进行表单验证
Dec 27 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
Jul 04 Javascript
详解如何用babel转换es6的class语法
Apr 03 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
May 16 Javascript
Vue插值、表达式、分隔符、指令知识小结
Oct 12 Javascript
vue如何使用rem适配
Feb 06 Vue.js
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设计模式 Command(命令模式)
2011/06/26 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
javascript 闭包疑问
2010/12/30 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
对于Python的Django框架部署的一些建议
2015/04/09 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
python 系统调用的实例详解
2017/07/11 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
python字典排序的方法
2019/10/12 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
电厂厂长岗位职责
2014/01/02 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
box-shadow单边阴影的实现
2023/05/21 HTML / CSS