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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CheckSum 计算工具1——bin文件

    CheckSum 计算工具1——bin文件

    2021年8月27日
    612
  • 理解逻辑回归中的ROC曲线和KS值「建议收藏」

    理解逻辑回归中的ROC曲线和KS值「建议收藏」1.回归和分类任务分类和回归都属于监督学习(训练样本带有信息标记,利用已有的训练样本信息学习数据的规律预测未知的新样本标签)分类预测的结果是离散的(例如预测明天天气-阴,晴,雨)回归预测的任务是连续的(例如预测明天的温度,23,24,25度)分类中比较常用的是二分类(label结果为0或1两种)2.逻辑回归不是回归从名字来理解逻辑回归.在逻辑回归中,逻辑一词是logis…

    2022年5月16日
    50
  • python小项目:3、九九乘法表与斐波那契数列

    python小项目:3、九九乘法表与斐波那契数列

    2021年10月6日
    34
  • nginx配置ssl证书实现https访问_ssl证书有效期

    nginx配置ssl证书实现https访问_ssl证书有效期1,登录阿里云,工作台找SSL证书或者安全下找CA证书2,点击创建证书(或购买证书),创建好以后点击证书申请、3,设置配置以及域名信息,仅填写圈住内容,其他默认即可4,随后等待一会,查看状态,是否为 已签发5,为已签发时,点击下载选择下载类型6,下载后解压文件7,上传至服务器,存放位置,先找到nginx所在位置 “/nginx/conf/”找到该位置创建“cert”把刚才解压的两个文件存放至此。8,开始nginx配置内容`server { #SSL 访问端口号为 443 li

    2022年8月19日
    9
  • Ubuntu Mobile Demo at IDF Shanghai (英文)

    Ubuntu Mobile Demo at IDF Shanghai (英文)

    2021年7月27日
    53
  • java tess4j训练库_Java 验证码识别库 Tess4j 学习

    java tess4j训练库_Java 验证码识别库 Tess4j 学习Java验证码识别库Tess4j学习【在用java的Jsoup做爬虫爬取数据时遇到了验证码识别的问题(基于maven),找了网上挺多的资料,发现Tess4j可以自动识别验证码,在这里简单记录下学习过程及遇到的一些问题。】步骤:需要在步骤一的tessdata文件中加入相关语言包(训练文件),在这里下载:https://github.com/tesseract-ocr/tessdata,如果是简…

    2022年5月29日
    94

发表回复

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

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