前端开发系列082-Node篇之PRPL

一、REPL介绍
在Node.js中,提供了一个交互式的运行环境-REPL(Read-Eval-Print-Loop)。
REPL解释器执行任务的方式
❏ <div class='liYY'>**Read**</div> **读取**用户输入并存储。
❏ <div class='liYY'>**Eval**</div> **执行**用户输入的代码。
❏ <div class='liYY'>**Print**</div> **输出**代码的执行结果。
❏ <div class='liYY'>**Loop**</div> **循环**执行以上步骤,直到退出。
在REPL环境中我们可以操作变量、执行JavaScript文件、访问和使用Node内置的模块、声明和调用函数甚至开启服务器,在该环境中可以方便的对JavaScript代码进行调试操作。
二、基本操作
在安装好Node.js之后,打开命令行窗口输入node指令即可进入到REPL环境。此时,命令行窗口中将会显示REPL运行环境的提示符>
操作变量
wendingding$ node
> name = "wendingding"
'wendingding'
> age = 18
18
> console.log("姓名:"+name,"年龄:"+age)
姓名:wendingding 年龄:18
> obj = {className:"太乙金仙",id:01};
{ className: '太乙金仙', id: 1 }
> obj.className
'太乙金仙'
> obj.id
1
上面的命令行中我们直接把字符串赋值给name,把数字18赋值给age。此外,还以字面量的方式创建了obj对象,而且通常观察发现REPL环境对JavaScript代码的支持还是比较好的。上面命令行在演示操作变量的时候,并没有使用var关键字,需要注意的是在REPL环境中如果把表达式赋值给var 关键字声明的变量,那么回车之后得到的结果将是undefined。
wendingding:JQuery wendingding$ node
> var name = "LiuY"
undefined
> name
'LiuY'
> var obj = {name:"LiuY",age:18,birthday:"1993-08-22"};
undefined
> obj
{ name: 'LiuY', age: 18, birthday: '1993-08-22' }
> obj.showName = function(){ console.log(this.name) }
[Function]
> obj.showName
[Function]
> obj.showName();
LiuY
变量是否使用var声明其结果截然不同,是因为REPL环境内部使用eval函数来评估表达式的执行结果。
eval函数的作用主要是把字符串转换为JavaScript的代码并且马上执行,在早期开发中常用来处理JSON数据的反序列化处理(具体的详情可以参考JSON数据解析),但因为eval函数的使用存在严重的安全隐患问题且会破坏JavaScript代码本身的词法作用域影响性能,所以不建议使用(在严格模式下禁用)。我们可以通过执行下面的代码来进行比较和验证。
console.log(eval("name='wendingding'"));
wendingding
console.log(eval("var newName='wendingding'"));
undefined
备注 在REPL环境中访问对象方法(函数)的时候,并不会完整的打印整个函数的内容而总是简单的显示和输出[Function],这是因为函数内容可能又臭又长,做人做事呐还是简单点好 :)
下划线字符
在REPL环境中,我们可以通过下划线字符(_)来访问最近使用的表达式。您可以通过(_)来访问最近的变量,对象甚至是对象的属性和方法。
wendingding:JQuery wendingding$ node
> index = 3
3
> _ + 4
7
> obj = {name:"LiuY",age:18,show:function(){console.log(this.name,this.age)}}
{ name: 'LiuY', age: 18, show: [Function: show] }
> obj.name
'LiuY'
> _
'LiuY'
> obj.show
[Function: show]
> _
[Function: show]
多行输入
在REPL环境中支持输入多行代码,如果需要在REPL环境中声明和执行函数而且函数体较长,那么可以将函数分成多行来书写(直接回车即可),当该表达式还没有完成的时候,REPL环境将为每一行添加···符号,下面给出简单的使用示例。
wendingding:JQuery wendingding$ node
> function sum(a,b){
... var result = a + b;
... console.log(result);
... return result;
... }
undefined
> sum(1,2);
3
3
三、基础命令
.break 返回命令提示符的起点,常用于重写代码(调整)。
.clear 返回命令提示符的起点,同.break命令。
.exit 退出当前的REPL运行环境。
.help 显示REPL环境中所有的基础命令。
.save 把REPL环境中输入的所有表达式保存到文件。
.load 把指定文件中的所有表达式依次加载到当前的REPL运行环境。
在Node.js中提供了一些基础命令来帮助我们更好的使用REPL运行环境,这些基础命令都以点(.)开始,下面给出简单示例。
wendingding:JQuery wendingding$ cd /Users/文顶顶/Desktop/node
wendingding:node wendingding$ touch index.js
wendingding:node wendingding$ vim index.js
wendingding:node wendingding$ cat index.js
var name = "文顶顶";
var age = 18;
var obj = {
name:"zs",
class:"Node",
show:function(){
console.log("姓名:"+this.name+" 班级:"+ this.class)
}
}
//001 测试.load命令
wendingding:node wendingding$ node
> .load ./index.js
var name = "文顶顶";
var age = 18;
var obj = {
name:"zs",
class:"Node",
show:function(){
console.log("姓名:"+this.name+" 班级:"+ this.class)
}
}
> obj.name
'zs'
> name
'文顶顶'
//002 测试.help命令
> .help
.break Sometimes you get stuck, this gets you out
.clear Alias for .break
.editor Enter editor mode
.exit Exit the repl
.help Print this help message
.load Load JS from a file into the REPL session
.save Save all evaluated commands in this REPL session to a file
> index = "我是测试的内容";
'我是测试的内容'
//003 测试.save命令
> .save ./save.js
Session saved to:./save.js
//004 测试.exit命令
> .exit
wendingding:node wendingding$ cat save.js
var name = "文顶顶";
var age = 18;
var obj = {
name:"zs",
class:"Node",
show:function(){
console.log("姓名:"+this.name+" 班级:"+ this.class)
}
}
obj.name
name
index = "我是测试的内容";
前端开发系列082-Node篇之PRPL的更多相关文章
- openlayers5-webpack 入门开发系列一初探篇(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
- leaflet-webpack 入门开发系列一初探篇(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...
- 【Windows10 IoT开发系列】配置篇
原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...
- 旨在脱离后端环境的前端开发套件 - IDT Server篇
IDT,一个基于Nodejs的,旨在脱离后端环境的前端开发套件,目的就是能让前端开发完全脱离后端的环境,无论后端是什么模板引擎(主流),都能应付自如. IDT主要包括两大部分:Server + Bui ...
- cesium-webpack 入门开发系列一初探篇(附源码下载)
前言 cesium-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 we ...
- 前端开发【第2篇:CSS】
鸡血 样式的属性多达几千个,但别担心,按照80-20原则,常用的也就几十个,你完全可以掌握它. Css初识 HTML的诞生 早期只有HTML的时候为了让HTML更美观一点,当时页面的开发者会把颜色写到 ...
- [置顶]【实用 .NET Core开发系列】- 导航篇
前言 此系列从出发点来看,是 上个系列的续篇, 上个系列因为后面工作的原因,后面几篇没有写完,后来.NET Core出来之后,注意力就转移到了.NET Core上,所以再也就没有继续下去,此是原因之一 ...
- openlayers4 入门开发系列之风场图篇
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- openlayers4 入门开发系列之热力图篇(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- Android Metro风格的Launcher开发系列第三篇
前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...
随机推荐
- lua三色标记的读写屏障理解
起因是已经被标记为黑色的对象无法进行再次遍历,然而黑色对象发生了引用变化:断开了引用或者引用了别的对象,会导致多标(不再被黑色对象引用的对象未能回收),漏标(黑色对象的新引用未能遍历标记)
- Grafana将弃用AngularJS-我们该如何迁移
AngularJS 弃用时间线 AngularJS 支持已在 Grafana 9 中正式弃用.在 2024 年 5 月发布的 Grafana 11 中,所有 Grafana Cloud 和自托管安装默 ...
- 详细介绍MessageQueueSelector
一.MessageQueueSelector 详解 MessageQueueSelector 是 RocketMQ 提供的一个接口,用于自定义消息发送时的队列选择策略. 通过实现该接口, 开发者可以控 ...
- Linux之用户和用户组管理
概念 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须要拥有一个账号进入系统,账号实质上就是一个用户在系统上的标识.系统根据标识分配不同的权限和资源.一个账号包含用 ...
- Windows系统设置开机自启动+分块压缩+文件共享
开机自启动+分块压缩+文件共享 一.设置开机自启动 win+R 打开运行窗口,输入 shell:startup 此时桌面会弹出一个目录文件夹,只需要将需要启动的软件放入该文件夹即可开机自启. C:\U ...
- Yuque Rich Text(语雀富文本编辑器)
Yuque Rich Text(语雀富文本编辑器) 由于本人觉得语雀编辑器非常好用,很符合我的使用习惯,然后发现语雀的Chrome浏览器插件实现了编辑器的功能,所以将其富文本的功能拆分位一个单独的Vu ...
- 亚马逊aws_access_key_id和aws_secret_access_key利用
00X01 信息泄露 敏感信息泄露,例如环境变量.例如,为了配置AWS CLI,需要设置以下环境变量: $ export AWS_ACCESS_KEY_ID=AKISIOSFODNN7EXAMPLE ...
- Web前端入门第 44 问:CSS 循环动画 animation 效果演示
相关属性 @keyframes 定义动画的关键帧序列 animation-name 指定 @keyframes 动画的名称 animation-duration 动画单次循环的持续时间(必需属性,否则 ...
- W.js ,一个超级小的三维 WebGL 引擎的使用方法
目录 前言 它的特点 API 入门使用 内置模型 导入自己的模型 动画 自定义投影矩阵 摄像机与主角绑定 解除绑定 前言 我们知道,在网页上搞三维,three.js 和 babylon.js 都是成熟 ...
- 【已解决】戴尔 Inspiron 5457 和 5557 启动报错:Invalid configuration information - please run SETUP program.
场景 我使用的是戴尔15-5557的笔记本电脑,在某次开机的时候系统提示:Invalid configuration information - please run SETUP program. 虽 ...