为啥使用 JavaScript 中 string 的 trim 方法时要替换 \uFEFF 呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥使用 JavaScript 中 string 的 trim 方法时要替换 \uFEFF 呢?相关的知识,希望对你有一定的参考价值。
很多人都不带这个的么?
\\uFEFF(Unicode 编码:U+FEFF )。它是 ES5 新增的空白符,叫「字节次序标记字符(Byte Order Mark)」,也就是 BOM;
Unicode3.2 之前,\\uFEFF 表示「零宽不换行空格(Zero Width No-Break Space)」;
Unicode3.2 新增了 \\u2060 用来表示零宽不换行空格, \\uFEFF 就只用来表示「字节次序标记字符(Byte Order Mark)」;
String.prototype.trim 是 ES5 增加的方法,对于老旧浏览器,还得使用自己实现的 trim;
至少在 低版本的 IE浏览器下 ,jQuery 1.7.2 是无法过滤字符串两端的 BOM 字符。
考虑到某些浏览器实现的 trim 不过滤 <NBSP> 或 <BOM>,
于是 jQuery 多加了一层检测,jQuery 1.8.1 在之前版本的基础上就添加了对BOM的过滤
上面是引用过来的
说白了就是文件的BOM问题,
架设js通过Ajax获取内容,并判断内容是否等于abc的时候,如果ajax请求的文件存在BOM头,那么结果就是\\uFEFF\\u0061\\u0062\\u0063,那么判断的时候就会出错。所以把\\uFEFF去掉。
一般都不需要这样处理,需要这样处理大多是因为没有规范文档编码
参考技术A \uFEFF(Unicode 编码:U+FEFF )。它是 ES5 新增的空白符,叫「字节次序标记字符(Byte Order Mark)」,也就是 BOM;Unicode3.2 之前,\uFEFF 表示「零宽不换行空格(Zero Width No-Break Space)」;
Unicode3.2 新增了 \u2060 用来表示零宽不换行空格, \uFEFF 就只用来表示「字节次序标记字符(Byte Order Mark)」;
String.prototype.trim 是 ES5 增加的方法,对于老旧浏览器,还得使用自己实现的 trim;
至少在 低版本的 IE浏览器下 ,jQuery 1.7.2 是无法过滤字符串两端的 BOM 字符。
考虑到某些浏览器实现的 trim 不过滤 <NBSP> 或 <BOM>,
于是 jQuery 多加了一层检测,jQuery 1.8.1 在之前版本的基础上就添加了对BOM的过滤
更多 请参考 :http://www.codesec.net/view/203109.html;
以上回答希望对你有所帮助,望采纳! 参考技术B 字节顺序标记(BOM),\uFEFF,可以理解为空白字符的意思.
在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节“/xFF/xFE”和三个字 节“/xEF/xBB/xBF”。在读取的时候就可能会遇到问题,但是不同的环境对这几个多于字符的处理也不一样。 参考技术C
原因:这是编码格式引起的,没有采用UTF-8 无BOM格式导致,替换它主要是为了兼容一些乱码或者其他格式导致的问题。
方法:只需要将文本转化为 UTF-8 无BOM格式即可。
JavaScript:为啥我们在函数中使用 **arguments** 对象? [复制]
【中文标题】JavaScript:为啥我们在函数中使用 **arguments** 对象? [复制]【英文标题】:JavaScript: Why do we use **arguments** object in a function? [duplicate]JavaScript:为什么我们在函数中使用 **arguments** 对象? [复制] 【发布时间】:2015-03-19 13:52:32 【问题描述】:我注意到在某些函数中使用了 arguments 对象:
function fn(arg1, arg2)
console.log(arguments[0])
fn(1, 2); // 1
为什么有用?
【问题讨论】:
我们可以将它用于未知参数所以...arguments
对象有点特殊,但它最常用于可变数量的参数。还有一些有用的属性,例如 caller
和 callee
。更多信息:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
【参考方案1】:
在您的示例中,它没有用,也不是一个好主意。当您想要一个可以接受不定数量参数的函数时,它会很有用:
function sum()
var total = 0;
for (var i = 0; i < arguments.length; i += 1)
total += arguments[i];
return total;
console.log(sum(5, 6, 7, 8)); // 26
请注意,ES6 允许使用rest parameters,这在现在使用arguments
的大多数情况下会更有用:
function sum(...values)
return values.reduce(function (prev, cur)
return prev + cur;
, 0);
【讨论】:
以上是关于为啥使用 JavaScript 中 string 的 trim 方法时要替换 \uFEFF 呢?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Javascript `atob()` 和 `btoa()` 被这样命名?
JavaScript为啥(typeof Object)返回的是function