JavaScript[容易忽视的错误]:当续行遇到换行,换行符丢失

JavaScript[容易忽视的错误]:当续行遇到换行,换行符丢失1、引言在JavaScript中,当定义一个大的字符串,特别是有换行情况时,为了看起来整齐、易读,一般使用续行符,例如: varscript=”varchart=anychart.pieChart([\[‘Chocolatepaste’,5],\[‘Whitehoney’,2],\

大家好,又见面了,我是你们的朋友全栈君。

1、引言

JavaScript中,当定义一个大的字符串,特别是有换行情况时,为了看起来整齐、易读,一般使用续行符,例如:

	var script = "var chart = anychart.pieChart([\
                ['Chocolate paste', 5],\
                ['White honey', 2],\
                ['Strawberry jam', 2],\
                ['Сondensed milk', 1]\
            ]);\
			//chart.bounds(0, 0, 100%,100%);\
			var stage = anychart.graphics.create('container', 600, 400);\
            stage.container('container');\
            chart.container(stage).draw();\
       	";

2、问题

如果我们直接拿这段代码去执行,就会发现结果和最初的预想大相径庭,为什么呢?

3、问题分析

因为,作为脚本,使用续行符时,只是保证字符串的连续性和合法(说明这时一个完整的串),但不会将换行符也包含在字符串中。也就是说,上面的代码中,script串将不会包含换行符。这是一个很严重的问题,如果串为脚本代码,且含有行注释符(”//“),则会改变了原有的逻辑,行注释符后面的代码将都被注释掉,不会被执行。

举个例子,下面这个例子通过将脚本代码编码,然后发送到后台执行(如在Node.js中执行),这里为了演示方便,只是简单的遍解码:

<textarea id="textarea1" rows="15" cols="53"></textarea>

<script lang="javascript">
	var script = "var chart = anychart.pieChart([\
                ['Chocolate paste', 5],\
                ['White honey', 2],\
                ['Strawberry jam', 2],\
                ['Сondensed milk', 1]\
            ]);\
			//chart.bounds(0, 0, 100%,100%);\
			var stage = anychart.graphics.create('container', 600, 400);\
            stage.container('container');\
            chart.container(stage).draw();\
       	";
  	var  script_out = encodeURIComponent( script);
  	var textarea1 = document.getElementById('textarea1');
  	textarea1.value = decodeURIComponent(script_out);
	
</script>

运行结果

JavaScript[容易忽视的错误]:当续行遇到换行,换行符丢失

可以看到字符串script中的换行符丢失,代码乱成一团,特别是

//chart.bounds(0, 0, 100%,100%);

这一行和后面的行连成了一体,假设执行这段代码,这其后面的代码均不会被执行。

4、解决办法

在有行注释的代码后加上换行符\n,避免后面的代码被注释掉,或者使用范围注释符(/* */)对代码进行注释。

JavaScript[容易忽视的错误]:当续行遇到换行,换行符丢失

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145007.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • github 收藏_安全小案例分享

    github 收藏_安全小案例分享小案例GitHub地址收藏说明:平时用到的小案例会收藏到此处点击标题直接进入原创者位置并会标明作者js轮播图支持移动端制作人:hishionH5页面唤起APP/移动端网页打开APP作者:ihziluoh…

    2022年4月19日
    47
  • 多节点服务器定时任务重复处理的问题

    多节点服务器定时任务重复处理的问题项目中有使用Spring定时执行任务的需求,用户可以自定义时间(半小时或整点)去生成需要的报表并发送邮件到用户自己的邮箱。项目里面提供的时间是半小时或整点去执行Spring定时任务,查询数据库中有哪些Schedule是满足要求的,然后去执行那些符合条件的任务。一切功能表现正常,但是项目部署在服务器上后,用户反映在同一时间会收到两封相同的邮件。我们检查了代码和SpringSchedule本

    2022年10月8日
    0
  • [安全攻防进阶篇] 二.如何学好逆向分析、逆向路线推荐及吕布传游戏逆向案例

    [安全攻防进阶篇] 二.如何学好逆向分析、逆向路线推荐及吕布传游戏逆向案例前文作者带领大家学习了什么是逆向分析、逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷。这篇文章将继续普及逆向分析知识,告诉大家如何学好逆向分析,并结合作者经验给出逆向分析的路线推荐,最后给出吕布传游戏逆向案例。话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行。基础性文章,希望对您有所帮助~

    2022年6月19日
    28
  • pycharm安装2021_idea环境配置

    pycharm安装2021_idea环境配置环境配置这一篇是给新手朋友准备的,如果你本地已经安装配置,请自行跳过Python代码运行,需要解释器,Python解释器下载地址:https://www.python.org/鼠标悬停在Downloads上,然后选择对应的操作系统,点击版本号即可。我这里以Python3.9.2为例官网下载较慢,可以在公众号:Python极客专栏,后台回复【python392】获取安装包。下载完毕,双击打开(建议以管理员身份运行)。不建议按照默认的方式安装,参考下图点击之后出现如下界面Docu

    2022年8月29日
    3
  • python求和怎么编程_python字符串数字求和

    python求和怎么编程_python字符串数字求和广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!的和实现环境:python3编辑器:pycharm分析:1、阶乘的计算就是比较麻烦的一部分,用递归函数实现是比较好的方案,先定义一个递归函数实现求阶乘功能。defrecursion(n):定义递归函数实现求阶乘功能ifn==1:return1else:returnn*recurs…

    2022年10月23日
    0
  • pycharm上传代码到gitlab_可以在gitlab里查看代码

    pycharm上传代码到gitlab_可以在gitlab里查看代码1.Pycharm关联Git安装路径(1)确定自己已经安装git,并且知晓git安装目录,我这里git安装在D盘目录下。(2)打开pycharm—->File——>Settings【点击Test后,出现弹框5,点击OK,此时Pycharm已关联git路径成功。】2.pycharm从gitlab上拉取代码(1)依次点击下图中…

    2022年8月28日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号