title: Javascript字符串判别相等
date: 2016-11-24 20:56:37
categories: 前端开发
tags: JavaScript
JavaScript中两个字符串类型,值完全相同,但是判断的时候一直不相等
好久没有开发Web了,今天需要做一个系统,今天在前端上碰到了一个问题。两个字符串用typeof,value等判断一模一样,但是就是"=="的时候报两者不想等
开发问题
好久没用开发系统,这次碰巧赶上要用hive做一个系统。于是就选择用python的Django来进行开发,但是在前端碰到了一个问题。要说在前端自己还是挺有经验的,这次居然懵逼了。。。。。。
事情是这样的,我从后台的hive数据仓库中拉取数据,然后希望在前台封装成json,然后交给echarts来绘图。流程很清楚,但是在js判断两个字符串相等的时候,出了问题。两个字符串从类型和值上开启来一模一样啊!最后找到了原因,居然是因为我在数据仓库中的数据可能尾部有一些特殊的空白字符,导致二者比较的时候不相等。让这个问题现出原形的是JavaScript中的encodeURIComponent,通过这个函数来进行打印二者的编码后的结果完全不一样,哎,这就是搞什么都要搞到根子上啊,不然非常容易被误导啊!!!!
alert(encodeURIComponent(a));
encodeURIComponent() 函数
- 定义和用法
encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。 - 语法
encodeURIComponent(URIstring) - 参数描述
URIstring 必需。一个字符串,含有 URI 组件或其他要编码的文本。 - 返回值
URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。 - 说明
该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。 - 提示和注释
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。