当前位置: 首页 > news >正文

网站制作公司小邓自己开发网站

网站制作公司小邓,自己开发网站,现货投资网站建设,山东建设厅科技处网站一、源码分析 /*** 读取ident* 这里的 ident 指标识符(identifier)#xff0c;也就是通常意义上的变量名* 这里默认的变量名规则为#xff1a;由美元符号($)、数字、字母或者下划线(_)构成的字符串** inner* param {Walker} walker 源码读取对象* return {string}*/ functio…一、源码分析 /*** 读取ident* 这里的 ident 指标识符(identifier)也就是通常意义上的变量名* 这里默认的变量名规则为由美元符号($)、数字、字母或者下划线(_)构成的字符串** inner* param {Walker} walker 源码读取对象* return {string}*/ function readIdent(walker) {var match walker.match(/\s*([\$0-9a-z_])/ig, 1) , 1);// #[begin] errorif (!match) {throw new Error([SAN FATAL] expect an ident: walker.source.slice(walker.index));}// #[end]return match[1]; }readIdent 函数用来匹配 template 中用到的变量名(如下图) 首先用到了 walk 类中的 match 函数该函数源码如下(这里不是 walk 类全部代码而是列出了本次用到的代码) /*** 字符串源码读取类用于模板字符串解析过程** class* param {string} source 要读取的字符串*/ function Walker(source) {this.source source; // 存储要解析的模版字符串this.len this.source.length; // 获得字符串长度this.index 0; // 初始话当前指针位置 }/*** 向前读取符合规则的字符片段并返回规则匹配结果** param {RegExp} reg 字符片段的正则表达式* param {boolean} isMatchStart 是否必须匹配当前位置* return {Array?}*/ Walker.prototype.match function (reg, isMatchStart) {reg.lastIndex this.index; // 指定下一次匹配的起始索引// 如果匹配成功exec() 方法返回一个数组并更新正则表达式对象的 lastIndex 属性。完全匹配成功的文本将作为返回数组的第一项从第二项起后续每项都对应一个匹配的捕获组。var match reg.exec(this.source);// exec() 可用来对单个字符串中的多次匹配结果进行逐条的遍历包括捕获到的匹配而相比之下 String.prototype.match() 只会返回匹配到的结果。if (match (!isMatchStart || this.index match.index)) {this.index reg.lastIndex; // 更新下次匹配的起始索引return match;} };match 函数中主要用到了 exec 函数来进行正则表达式匹配match 函数中需要注意一下几点 开始匹配之前对 lastIndex 进行赋值在进行循环匹配时就形成了向前移动的指针。在每次匹配时开始的位置isMatchStart 是一个必须匹配当前位置标识。当 isMatchStart 为 false 时或者通过取反操作为 false时就进行当前index和match.index进行相等比较只有两者相等才可以是匹配当前位置而其中 match.index 为‘匹配到的字符位于原始字符串的基于 0 的索引值’this.index 在匹配的过程中也是动态更新的所以可以使用两个值做比较。 在san中变量名由美元符号($)、数字、字母或者下划线()构成为了匹配变量名给出如下正则表达式 上图可以看出变量名是如何匹配的在 match 中 isMatchStart 表示为已经开启。为啥开启呐下面看一下/\s*([$0-9a-z])/ig,正则表达式如何匹配变量的 正确的变量命名 正确的变量命名它的index是从 0 开始的 不正确的变量命名是不是从 0 开始也就是说 match.index 和 this.index 不相等。 注意本例子中index是从0开始在其他相关中可能不一样但是如果isMatchStart标识开启了那么match.index 和 this.index 必须相等 如果没有匹配到则报错。如果匹配到就返回 match[1]即匹配到的值。 这里需要知道的是为啥是match[1] 而不是 match[0] 或者 [2]?这是因为 当exec 函数匹配成功exec() 方法返回一个数组并更新正则表达式对象的 lastIndex 属性。完全匹配成功的文本将作为返回数组的第一项从第二项起后续每项都对应一个匹配的捕获组。那么什么是捕获组呐可以简单为正则表达式中使用括号‘()’括起来的就是一个捕获组在匹配变量名表达式中可以看出([$0-9a-z_])是。所以是 match[1]
http://www.hkea.cn/news/14385768/

相关文章:

  • 襄阳论坛网站建设广州天拓做网站吗
  • 南宁网站建设公司招聘网站技术有哪些
  • 免费建网站 手机网站网站建设用哪种语言
  • 思茅网站建设小程序直播开发
  • 江苏网站推广网络产品推广方法
  • 深圳手机网站制作个人网站模板psd
  • 济南外贸建站网站开发目的意义
  • 万网个人网站建设教程做门户网站用什么系统
  • 云网站注册免费商城系统哪个好
  • 厦门石材网站建设服饰 企业 网站建设
  • 深圳微商城网站制作费用网络广告产生于哪个国家
  • 哪些网站是用h5做的app 网站开发公司电话
  • 未成年做网站邢台公司网站建设
  • 模板手机网站建设公司排名智能开发平台软件
  • 湖北省建设厅网站陕西网络推广公司
  • 旅游网站规划设计方案wordpress add option
  • 聊城做企业网站的遵义新蓝外国语学校网站建设
  • 可以做专利聚类分析的免费网站哪里可以做网页
  • 网站seo入门基础教程书籍wordpress添加邮箱设置
  • php企业网站cms安徽省建设工程招标投标信息网官网
  • 柬埔寨网站建设运营维护公司网站建设选什么服务器
  • 怎么往网站里做游戏浦东新区建设工程安全质量监督站网站
  • 青岛网站建设有哪些公司江西航达建设集团网站
  • 网站建设程序的步骤过程dw做网站模板
  • 最新新闻热点事件50字重庆做seo网站优化选择哪家
  • 朔州城市建设网站wordpress微信小程序
  • 如何查看一个网站是否备案百度关键词搜索指数
  • 网站怎样盗链图片优购物官方网站手机版
  • 网站的特效代码长沙的网站建设
  • 淘宝联盟推广网站怎么建设贵阳哪些公司建网站