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 相关文章推荐
jquery each()源代码
Feb 14 Javascript
javascript错误的认识不用关心内存管理
Dec 15 Javascript
javascript 系统文件夹文件操作及参数介绍
Jan 08 Javascript
动态获取复选框checkbox选中个数的jquery代码
Jun 25 Javascript
删除select中所有option选项jquery代码
Aug 12 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 Javascript
asp知识整理笔记3(问答模式)
Sep 27 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 Javascript
bootstrap实现弹窗和拖动效果
Jan 03 Javascript
JS实现点击事件统计的简单实例
Jul 10 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 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字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
10 个经典PHP函数
2013/10/17 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP 芝麻信用接入的注意事项
2016/12/01 PHP
php unlink()函数使用教程
2018/07/12 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
使用Python的判断语句模拟三目运算
2015/04/24 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
如何在python中写hive脚本
2019/11/08 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
幼师自荐信范文
2013/10/06 职场文书
个人课题方案
2014/05/08 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
计划生育工作总结2015
2015/04/03 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
七年级作文之雪景
2019/11/18 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
mysql 子查询的使用
2022/04/28 MySQL