zoukankan      html  css  js  c++  java
  • ES6基础(二)

    一、ES6字符串扩展

    字符串模板

      在传统的JavaScript语言中,输出模板通常是这样写的。

    上面这种写法繁琐不方便,于是ES6中引入了字符串模板解决这个问题。

    用反引号(`)标识。他可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

    如果使用模板字符串表示多行字符串,所有的空格和缩进都会保留在输出当中。

    上面代码中,所有模板字符串的空格和换行,都是被保留的,比如<ul>标签前面会有一个换行。如果你不想要这个换行,可以使用trim方法消除它。

    模板字符串中嵌入变量,需要将变量名写在${}之中。

    大括号内部可以放入任意JavaScript表达式,可以进行计算,以及引用对象属性。

    模板字符中还能调用函数。

    如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。

    如果模板字符串中的变量没有声明,将会报错。

    模板字符串甚至还能嵌套。

      includes(), startsWith(), endsWith() 

      在JavaScript中只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。而ES6中有提供了三种新方法。

    --includes():返回布尔值,表示是否找到了参数字符串。

    --startsWith():返回布尔值,表示参数数字字符串是否在原字符串的头部。

    --endsWith() :返回布尔值,表示参数数字字符串是否在原字符串的尾部。

    这三个方法都是支持第二个参数,表示开始搜索的位置。

    上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

        repeat()

    repeat方法返回一个新字符串,表示将原字符串重复n次。

    如果参数是小数,那么会被取整,且不会进行四舍五入,小数点后的书都会被舍弃掉。

    如果repeat的参数是负数或者Infinity,会报错。

    但是,如果参数是 0 到 -1 之间的小数,则等同于 0 ,这是因为会先进行取整运算。0 到 -1 之间的小数,取整以后等于 -0,repeat视同为 0 。

    参数NaN等同于 0。

    如果repeat的参数是字符串,则会先转换成数字。

      padStart(),padEnd()

    padStart()用于头部补齐,padEnd()用于尾部补齐。

    上面代码中,padStart()和padEnd()一共接受两个参数,第一个参数是字符串补全生效的长度,第二个参数是用来补全的字符串。

    如果 原字符串的长度大于或等于最大的长度,则字符串不生效,返回原字符串。

    如果用来补齐的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出部分的补全字符串。

    如果省略第二个参数,默认使用空格补齐长度。

    二、正则的扩展

      RegExp 构造函数

    在ES5中,RegExp构造函数的参数有两种情况。

    第一种是:参数是字符串,这是第二个参数表示正则表达式的修饰符。

    第二种是:参数是正则表达式,这时会返回一个原有正则表达式的拷贝。

    但是,在ES5中不允许此时使用第二个参数添加修饰符,否则就会报错。

    所以,在ES6中就改变咯额这种行为。如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。

    上面的代码中,原有的正则对象的修饰符是ig,他会被第二个参数i覆盖。

         字符串的正则方法

     字符串对象共有4种方法,可以使用正则表达式:match()、replace()、search()、split()

    这4种方法咋语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全部定义在RegExp对象上。

    • String.prototype.match 调用 RegExp.prototype[Symbol.match]
    • String.prototype.replace 调用 RegExp.prototype[Symbol.replace]
    • String.prototype.search 调用 RegExp.prototype[Symbol.search]
    • String.prototype.split 调用 RegExp.prototype[Symbol.split]
  • 相关阅读:
    QTP问题:查询文件被占用
    QTP自动化
    Spring: $Proxy9 cannot be cast to test.spring.service.impl.PersonServiceImpl2
    spring: White spaces are required between publicId and systemId.
    spring学习1
    MyBatis学习(1)
    从技术人员的角度看,公司怎么生存?
    一天一工程总结系列-7.7-KVOController
    appCode使用说明
    ios开发中的字符串常量如何处理
  • 原文地址:https://www.cnblogs.com/zhen-prz/p/10487992.html
Copyright © 2011-2022 走看看