使用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 相关文章推荐
javascript 变量作用域 代码分析
Jun 26 Javascript
页面中js执行顺序
Nov 09 Javascript
轻量级 JS ToolTip提示效果
Jul 20 Javascript
JavaScript性能陷阱小结(附实例说明)
Dec 28 Javascript
js将控件隐藏及display属性的使用介绍
Dec 30 Javascript
jquery.mobile 共同布局遇到的问题小结
Feb 10 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
PHP实现本地图片上传和验证功能
Feb 27 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
Mar 09 Javascript
vue过渡和animate.css结合使用详解
Jun 14 Javascript
angular学习之从零搭建一个angular4.0项目
Jul 10 Javascript
bootstrap模态框关闭后清除模态框的数据方法
Aug 10 Javascript
使用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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
重新认识php array_merge函数
2014/08/31 PHP
php计算整个目录大小的方法
2015/06/01 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
jQuery 树形结构的选择器
2010/02/15 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
用Python进行TCP网络编程的教程
2015/04/29 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
手写一个python迭代器过程详解
2019/08/27 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
html5使用canvas实现图片下载功能的示例代码
2017/08/26 HTML / CSS
露营世界:Camping World
2017/02/02 全球购物
美国校服网上商店:French Toast
2019/10/08 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
远程教育心得体会
2014/01/03 职场文书
化妆品促销方案
2014/02/24 职场文书
追悼会主持词
2014/03/20 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
群众路线党课主持词
2014/04/01 职场文书
物业管理工作方案
2014/05/10 职场文书
八一建军节演讲稿
2014/09/10 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
婚宴祝酒词大全
2015/08/10 职场文书