随性的知识记录 (最近遇到的困难)
1,关于正则表达式,在做文本编辑框的高级校验的时候,允许用户输入正则表达式来校验,但是用户输入的没有任何限制,例如:按照我们的设计用户输入的内容应该是这样的:^$|^[0-9A-E]+$,但是测试的正则是研发给的,而研发需要的正则表达式是这样的:/^$|^[0-9A-E]+$/。这样的话,我们拿到用户输入的内容,在通过RegExp转化为正则表达式,那么正则表达式会是:/\/^$|^[0-9A-E]+$/\/。
所以为了兼容用户的这种操作,第一次使用了eval(),将用户本来已经输入的正确的内容,转化为表达式(字符串转表达式)。但是遇到一个问题:eval()防止不了XSS攻击。所以后来放弃了。现在没有想到更好的办法,只能针对性的对用户的操作做兼容。用户的输入情况可能有4种:1:/^$|^[0-9A-E]+$/ 2:^$|^[0-9A-E]+$ 3:/^$|^[a-z]+$/i 4:/^$|^[a-z+$/i (本身就是一个错误的表达式,缺了一个符号)。希望能找到更好的办法来兼容。加油。。。。。
2.underscore
JavaScript是函数式编程语言,支持高阶函数和闭包。函数式编程非常强大,可以写出非常简洁的代码。例如Array
的map()
和filter()
方法:
'use strict';
var a1 = [1, 4, 9, 16];
var a2 = a1.map(Math.sqrt); // [1, 2, 3, 4]
var a3 = a2.filter((x) => { return x % 2 === 0; }); // [2, 4]
现在问题来了,Array
有map()
和filter()
方法,可是Object没有这些方法。
jQuery统一了不同浏览器之间的DOM操作的差异,让我们可以简单地对DOM进行操作,underscore则提供了一套完善的函数式编程的接口,让我们更方便地在JavaScript中实现函数式编程。
jQuery在加载时,会把自身绑定到唯一的全局变量 $
上,underscore与其类似,会把自身绑定到唯一的全局变量 _
上。