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


相关推荐

  • Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」

    Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」redhat系统镜像分享[百度网盘分享]链接:https://pan.baidu.com/s/1U0SUh7qmLGfpLN5Fqb4Wgg提取码:bpwdredhat7.6版本安装详解

    2022年8月5日
    17
  • WinSCP连接Ubuntu拒绝访问,SSH访问状态确认

    WinSCP连接Ubuntu拒绝访问,SSH访问状态确认WinSCP连接Ubuntu拒绝访问的问题

    2022年9月15日
    0
  • pandas缺失值填充_python缺失值处理 fillna

    pandas缺失值填充_python缺失值处理 fillna约定:importpandasaspdimportnumpyasnpfromnumpyimportnanasNaN填充缺失数据fillna()是最主要的处理方式了。df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])df1代码结果:…

    2022年8月12日
    10
  • setsockopt()使用方法(參数具体说明)

    setsockopt()使用方法(參数具体说明)

    2021年12月7日
    39
  • 手机开发平台介绍[通俗易懂]

    手机开发平台介绍[通俗易懂]
    刚刚进入手机研发领域,为今后职业生涯规划,从网上搜了资料方便学习。
    手机客户端软件开发最大的困难就是平台不统一,手机开发平台太多。
    手机可分为智能手机开发和featherphone手机。开发平台可分为开放式平台和封闭式平台,开放式平台包括symbian、windowsmobile、linux、iPhone、Android、BlackBerry、j2me、brew等,支持手机应用程序通过OTA下载和安装;封闭式平台包括MTK、展讯、TI、飞利浦等。下面分别介绍。

    2022年8月12日
    6
  • Ntp校时客户端小工具

    Ntp校时客户端小工具Ntp校对时间是常用的计算机时间同步的方式之一,但是网上偏偏下载不到一个不带广告,且操作简单暴力的软件,其实我要的功能无非就是1:开机自动校对时间2:每隔一段时间校对时间3:可配置ntp服务器地址和校对间隔但是就是找不到一款合适自己用的工具,无奈啊,只好自己手写一个配置文件是ini,一看就懂软件下载地址:https://download.csdn.net/download/li…

    2022年6月25日
    108

发表回复

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

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