使用JS中的Replace()方法遇到的问题小结


Posted in Javascript onOctober 20, 2017

今天在写pc客户端自动化打包脚本的时候遇到遇到了几个问题,虽然是小问题,但是也卡了一段时间,所以决定记录一下。

js的replace()方法是用于替换某些内容,它可以接收两个参数,第一个是一个被替换的正则表达式对象或者一个字符串,第二个可以是将要替换成的内容或者函数,将要替换成的内容须是一个字符串。我在执行的时候遇到的报错是:Cannot read property ‘replace' of undefined。具体代码如下:

var fs=require("fs")
var infoPlistFile = osxFolder + '/Contents/Info.plist';
var infoPlist = fs.readFile(infoPlistFile);
fs.writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));

当执行这段代码的时候得到的报错是无法获取未定义的属性replace,开始不知道问题出在哪里,然后试着打印出被替换的文件infoPlist,发现是null,然后就知道是定义infoPlist那里出现问题,修改成fs.readFileSync之后发现就没有这个报错了,但是又有一个新的报错:replace is not a function

查找了一下相关资料,说明对应的变量不是字符串,而是其他的类型,所以我打印了一下infoPlist的类型,打印出来的是object,所以问题是出在这里,因为infoPlist的类型不对,所以导致了报错,于是增加了处理成字符串的操作,于是就可以了

var infoPlistFile = osxFolder + '/Contents/Info.plist';
var infoPlist = readFile(infoPlistFile).toString();
writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));

另外我在自己写demo做测试的时候还发现,如果没有一个变量来接收的话,replace()方法是不起作用的,如:

var str="Hello World";
str.replace(/World/g, "dxy");
console.log(str);

这个时候打印出来的str还是”Hello World”,是没有替换的,这里应该用一个变量来作为接收,替换原来的变量,如:

var str="Hello World";
var a=str.replace(/World/g, "dxy");
console.log(a);

这个时候打印的结果就是”Hello dxy”。

总结:这次在使用replace()方法的时候让我注意到以下几个问题:

1、在使用replace()方法的时候首先要确保不能在null或undefined类型的变量上调用。我们可以给它增加一个判断,如果变量有值的时候才调用方法。

2、执行replace()方法的时候的变量不仅是要有值,还必须是字符串类型的。

3、js不是自动赋值的,执行一个方法,要么是在方法里直接执行,要么是返回结果,返回结果的时候需要通过一个变量去接收。

4、如果第一个参数传的是一个正则表达式的话,是不能加引号的。

以上所述是小编给大家介绍的使用JS中的Replace()方法遇到的问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
表单内同名元素的控制
Nov 22 Javascript
JavaScript Date对象使用总结
May 14 Javascript
Mootools 1.2教程 函数
Sep 15 Javascript
js调用AJAX时Get和post的乱码解决方法
Jun 04 Javascript
AngularJS 路由详解和简单实例
Jul 28 Javascript
分享十三个最佳JavaScript数据网格库
Apr 07 Javascript
protractor的安装与基本使用教程
Jul 07 Javascript
js+html5实现侧滑页面效果
Jul 15 Javascript
浅谈Node.js之异步流控制
Oct 25 Javascript
浅谈node中的cluster集群
Jun 02 Javascript
Angularjs之ngModel中的值验证绑定方法
Sep 13 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 jQuery
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 #Javascript
2种简单的js倒计时方式
Oct 20 #Javascript
pm2 部署 node的三种方法示例
Oct 20 #Javascript
vue.js实例对象+组件树的详细介绍
Oct 20 #Javascript
dropload.js插件下拉刷新和上拉加载使用详解
Oct 20 #Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 #Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 #Javascript
You might like
PHP 高手之路(二)
2006/10/09 PHP
WordPress中"无法将上传的文件移动至"错误的解决方法
2015/07/01 PHP
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
JavaScript函数详解
2014/11/17 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
Python实现的简单发送邮件脚本分享
2014/11/07 Python
Python 3.x 新特性及10大变化
2015/06/12 Python
Python的互斥锁与信号量详解
2019/09/12 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
python双向链表原理与实现方法详解
2019/12/03 Python
keras之权重初始化方式
2020/05/21 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
小学新学期寄语
2014/04/02 职场文书
英文推荐信格式范文
2014/05/09 职场文书
机械专业求职信
2014/05/25 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
考试作弊检讨书
2014/10/21 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
罗马假日观后感
2015/06/08 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
vue如何清除浏览器历史栈
2022/05/25 Vue.js