使用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 相关文章推荐
为数据添加append,remove功能
Oct 03 Javascript
Firefox div高度自适应
Apr 28 Javascript
JS与框架页的操作代码
Jan 17 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 Javascript
javascript中闭包概念与用法深入理解
Dec 15 Javascript
Canvas 绘制粒子动画背景
Feb 15 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
Mar 04 Javascript
Node.js服务器开启Gzip压缩教程
Aug 11 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
在微信小程序中渲染HTML内容的方法示例
Sep 28 Javascript
不刷新网页就能链接新的js文件方法总结
Mar 01 Javascript
three.js 如何制作魔方
Jul 31 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
PHP新手上路(十四)
2006/10/09 PHP
PHP分页显示制作详细讲解
2006/12/05 PHP
php for 循环使用的简单实例
2016/06/02 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python uuid模块使用实例
2015/04/08 Python
python开发简易版在线音乐播放器
2017/03/03 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
Python字符串的常见操作实例小结
2019/04/08 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
django rest framework使用django-filter用法
2020/07/15 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
python使用smtplib模块发送邮件
2020/12/17 Python
结婚典礼证婚词
2014/01/11 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python